【发布时间】:2016-09-23 03:38:42
【问题描述】:
我正在做一个从 1 到 999 的罗马数字转换器到十进制,我可以将值添加到 acum,例如 XV,我可以添加 10+5=15 但我不能像 IV、5 那样减去-1=4,如果一个字母在前面,我如何比较一个较低的值?我试图向后打印一个数组进行比较,但我做不到。
import java.util.*;
public class NumerosRomanos {
private String numero;
public NumerosRomanos(String numero){
setNumero(numero);
}
public void setNumero(String numero){
this.numero=numero;
}
public String getNumero(){
return numero;
}
public String mayusculas(String numero){
return numero.toUpperCase();
}
public String separar(){
String mayusculas=mayusculas(numero);
String[] resultado=mayusculas.split("",0);
for(int i=0;i<resultado.length;i++){
System.out.println(resultado[i]);
}
int acum=0;
for(int i=0;i<resultado.length;i++){
switch(resultado[i]){
case "I": acum+=1;
break;
case "V": acum+=5;
break;
case "X": acum+=10;
break;
case "L": acum+=50;
break;
case "C": acum+=100;
break;
case "D": acum+=500;
break;
case "M": acum+=1000;
break;
default: System.out.println("Error");
break;
}
}
for(int contador2=resultado.length; contador2 > 0;contador2--){
System.out.println(resultado[contador2]);
}
String ultimo= Integer.toString(acum);
return ultimo;
}
public String toString(){
return separar();
}
}
【问题讨论】:
-
作为一个广泛的建议,您需要修改您的程序,以考虑到一个字母的含义可能取决于它后面的那个(假设有一个)。
-
你的程序还能编译吗?
标签: java roman-numerals