0

我想我有正确的代码来进行转换(感谢用户 Matt Bryant 的帮助),但我现在对如何继续感到困惑。到目前为止,我所学到的如何在主体中键入代码(public static void main(String args[])),但是我得到帮助的这段代码似乎没有进入 main 方法。谁能帮我运行这段代码?:) (另外我有一个错误说我的扫描仪无法解析为类型/变量)。我知道主要方法中没有写任何内容,但这只是因为我不确定此时该做什么。

import java.util.Scanner;

public class romannumeralconversion {

    public static void main(String args[]) {

    }

    public String ToRoman() {

        Scanner myKeyboard = new Scanner(System.in);
        System.out.println("Enter the integer: ");
         number = myKeyboard.nextInt();
        myKeyboard.close();
        return ToRoman(number);

    }

    public String ToRoman(int number) {

        if ((number < 1 || (number > 3999)))

            return "INVALID";

        if (number >= 1000)
            return "M" + ToRoman(number - 1000);

        if (number >= 900)
            return "CM" + ToRoman(number - 900);

        if (number >= 500)
            return "D" + ToRoman(number - 500);

        if (number >= 400)
            return "CD" + ToRoman(number - 400);

        if (number >= 100)
            return "C" + ToRoman(number - 100);

        if (number >= 90)
            return "XC" + ToRoman(number - 90);

        if (number >= 50)
            return "L" + ToRoman(number - 50);

        if (number >= 40)
            return "XL" + ToRoman(number - 40);

        if (number >= 10)
            return "X" + ToRoman(number - 10);

        if (number >= 9)
            return "IX" + ToRoman(number - 9);

        if (number >= 5)
            return "V" + ToRoman(number - 5);

        if (number >= 4)
            return "IV" + ToRoman(number - 4);

        if (number >= 1)
            return "I" + ToRoman(number - 1);

        return "INVALID";
    }
}
4

2 回答 2

1

为了让它在你的主类中运行,你需要实例化它,然后调用你想要运行的方法,所以你可能会在你的主类中想要这样的东西

romannumeralconversion rnc = new romannumeralconversion();
System.out.println(rnc.ToRoman());

此外,您的number变量没有分配类型,因为您正在阅读下一个 int,int像这样放在前面 int number = myKeybaord.nextInt()

您还需要将以下导入语句放在类文件的最顶部以导入Scanner该类(刚刚意识到您确实有这个)

import java.util.Scanner;

请注意,约定是类以大写字母开头,方法应以每个内部单词的首字母大写命名。请参阅 java命名约定

于 2013-10-02T23:02:41.263 回答
1

您可以将 ToRoman() 的代码放在主块中,然后从那里调用 ToRoman(int number):

    public static void main(String args[]) {
        Scanner myKeyboard = new Scanner (System.in);
        System.out.println("Enter the integer: ");
        int number = myKeyboard.nextInt();
        System.out.println(ToRoman(number));
        myKeyboard.close();
    }

另一个问题是,ToRoman(int number) 总是会在输出的末尾打印出“INVALID”。因此,您可以通过在 ToRoman(int number) 中添加另一个基本情况条件来停止这种行为,例如:

    if(number == 0) return "";

顺便说一句,为了能够调用 ToRoman(int number),您需要将其定义为静态方法,或者创建类的对象然后调用该方法。

于 2013-10-02T23:08:45.453 回答