0

您好我正在尝试编写将罗马数字(如 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();
 }
 }
4

2 回答 2

1

你没有调用任何方法,所以它不会做任何事情。只会打印这个

 System.out.println("PLEASE ENTER ANY NUMBER IN ROMAN NUMERIC FORMAT:");

调用类似的方法

romanToDecimal("some tring");

因此,您正在从控制台获取用户的输入

所以这样做

 Scanner input = new Scanner(System.in);
romanToDecimal(input);
于 2013-11-11T05:29:13.203 回答
0

尽管您要求他们输入由字母组成的内容,但您正在尝试使用nextInt(). 那是行不通的。 nextInt()只读取数字。

正如另一个答案所指出的那样,您需要实际调用romanToDecimal方法,而您没有这样做。

于 2013-11-11T06:21:54.680 回答