java 罗马数字_JAVA,罗马数字与阿拉伯数字的互转
本人逛貼吧時候遇到某人求助,于是幫他實現了一下。下面是阿拉伯轉羅馬的數字。
import?java.util.ArrayList;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
public?class?TOroma?{
private?int?alab;
TOroma(int?alab){
this.alab=alab;
}
public?void?zhuanhuan(){
String?str="";
String?x="";//用來存儲最終的結果
String?tp=String.valueOf(alab);//轉換為String,方便匹配
char?temp[]=tp.toCharArray();//將String轉換為數字,方便把每個數字取出然后獲得它的大小方便匹配。
//開始獲取大小
for(int?i=0;i
int?s=(int)((temp[i]-48)*Math.pow(10,?temp.length-i-1));
str+=s;
}
String?regex=null;
String?s="'',0,I,1,II,2,III,3,IV,4,V,5,VI,6,VII,7,VIII,8,IX,9,X,10,XX,20,XXX,30,XL,40,L,50,LX,60,LXX,70,LXXX,80,XC,90,C,100,CC,200,CCC,300,CD,400,D,500,DC,600,DCC,700,DCCC,800,CM,900,M,1000,MM,2000";
String?c[]=s.split(",");//將字符串打散,方便存入到list中去
Pattern?p;//正則
ArrayList?list=new?ArrayList();//聲明一個容器來存儲這些對象
for(int?t=c.length-2;t>0;t=t-2){
t?m=new?t(c[t],Integer.parseInt(c[t+1]));
list.add(m);
}
//遍歷循環,正則匹配
for(int?i=0;i
int?_alab=list.get(i).getAlab();
regex="^("+_alab+")";
p=Pattern.compile(regex);
Matcher?matcher=p.matcher(str);
if(matcher.find()){
x+=list.get(i).getRoma();
str=str.substring(String.valueOf(list.get(i).getAlab()).length());
}
}
System.out.println(tp+"----------"+x);//輸出轉換后的值,這里就是結果。
}
//下面開始測試:
public?static?void?main(String[]?args)?{
TOroma?t=new?TOroma(567);//這里我只寫到了2000,所以,能求的值必須是2000以下,
t.zhuanhuan();
}
}
class?t{
private?String?roma;
private?int?alab;
public?t(String?roma,int?alab){
this.roma=roma;
this.alab=alab;
}
public?String?getRoma()?{
return?roma;
}
public?void?setRoma(String?roma)?{
this.roma?=?roma;
}
public?int?getAlab()?{
return?alab;
}
public?void?setAlab(int?alab)?{
this.alab?=?alab;
}
}
羅馬轉阿拉伯
import?java.util.ArrayList;
import?java.util.regex.*;
//定義一個類,用來存儲一個阿拉伯數字所對應的羅馬字母
public?class?hell?{
private?String?roma;
private?int?alab;
hell(String?roma,int?alab){
this.roma=roma;
this.alab=alab;
}
public?static?void?main(String[]?args)?{
//??public?void?alab_TO_roma(String?roma){
//???return?;
//??}
int?num=0;
String?str="DLXVII";//測試用的數據,你也可以自己寫一個分類
String?regex=null;
String?s="'',0,I,1,II,2,III,3,IV,4,V,5,VI,6,VII,7,VIII,8,IX,9,X,10,XX,20,XXX,30,XL,40,L,50,LX,60,LXX,70,LXXX,80,XC,90,C,100,CC,200,CCC,300,CD,400,D,500,DC,600,DCC,700,DCCC,800,CM,900,M,1000,MM,2000";
String?c[]=s.split(",");//將字符串打散,方便存入到list中去
Pattern?p;//正則
ArrayList?list=new?ArrayList();//聲明一個容器來存儲這些對象
for(int?t=c.length-2;t>0;t=t-2){
hell?m=new?hell(c[t],Integer.parseInt(c[t+1]));
list.add(m);
}
//遍歷循環,正則匹配
for(int?i=0;i
int?_alab=list.get(i).alab;
String?_roma=list.get(i).roma;
regex="^("+_roma+")";
p=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Matcher?matcher=p.matcher(str);
if(matcher.find()){
num+=_alab;
str=str.substring(_roma.length());
}
}
System.out.println(num);//輸出轉換后的值
}
}
第二個就寫的沒有那么規范了,因為快下班了,嘿嘿。。不過功能還是實現了的。//*對于變量名勿噴。。。*/
總結
以上是生活随笔為你收集整理的java 罗马数字_JAVA,罗马数字与阿拉伯数字的互转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javascript 将阿拉伯数字转换成
- 下一篇: Mac开机速度优化的详细教程