从罗马数字到阿拉伯数字的转换器

时间:2013-11-11 05:26:18

标签: java

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

2 个答案:

答案 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方法,而您不会这样做。