您好我正在尝试编写将罗马数字(如MCLII)转换为阿拉伯数字的程序。在电脑和教科书面前花费数小时后,我有一个未完成的代码。请帮我找出程序错误的原因,最后不打印任何内容。谢谢
public class Main {
public static void romanToDecimal(java.lang.String romanNumber) {
int decimal = 0;
int lastNumber = 0;
String romanNumeral = romanNumber.toUpperCase();
for (int x = romanNumeral.length() - 1; x >= 0 ; x--)
{
char convertToDecimal = romanNumeral.charAt(x);
switch (convertToDecimal)
{
case 'M':
decimal = processDecimal(1000, lastNumber, decimal);
lastNumber = 1000;
break;
case 'D':
decimal = processDecimal(500, lastNumber, decimal);
lastNumber = 500;
break;
case 'C':
decimal = processDecimal(100, lastNumber, decimal);
lastNumber = 100;
break;
case 'L':
decimal = processDecimal(50, lastNumber, decimal);
lastNumber = 50;
break;
case 'X':
decimal = processDecimal(10, lastNumber, decimal);
lastNumber = 10;
break;
case 'V':
decimal = processDecimal(5, lastNumber, decimal);
lastNumber = 5;
break;
case 'I':
decimal = processDecimal(1, lastNumber, decimal);
lastNumber = 1;
break;
}
}
System.out.println(decimal);
}
public static int processDecimal(int decimal, int lastNumber, int lastDecimal)
{
if (lastNumber > decimal)
{
return lastDecimal - decimal;
} else {
return lastDecimal + decimal;
}
}
public static void main(java.lang.String args[]) {
System.out.println("PLEASE ENTER ANY NUMBER IN ROMAN NUMERIC FORMAT:");
Scanner input = new Scanner(System.in);
int romanToDecimal;
romanToDecimal = input.nextInt();
}
}
答案 0 :(得分:1)
你没有打电话给任何方法,因此它不会做任何事情。只会打印
System.out.println("PLEASE ENTER ANY NUMBER IN ROMAN NUMERIC FORMAT:");
调用类似
的方法romanToDecimal("some tring");
所以你从控制台那里获取用户的输入
这样做
Scanner input = new Scanner(System.in);
romanToDecimal(input);
答案 1 :(得分:0)
虽然您要求他们输入由字母组成的内容,但您尝试使用nextInt()
来阅读它。那不行。 nextInt()
只能读取数字。
正如另一个答案所指出的那样,您需要实际调用 romanToDecimal
方法,而您不会这样做。