当前位置: 首页 > 知识库问答 >
问题:

Java新手,请帮助我运行程序!Im的任务是编写一个将整数转换为罗马数字的程序

鲜于谦
2023-03-14

我想我有适当的代码来进行转换(感谢用户MattBryant的帮助),但我现在对如何继续感到困惑。到目前为止,我所学到的是如何在主体中键入代码(public static void main(String args[])),但我所获得的这段代码在main方法中似乎并不适用。有人能帮我运行这段代码吗?:)(还有一个错误,我的扫描仪无法解析为类型/变量)。我知道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";
    }
}

共有2个答案

阚亮
2023-03-14

要使它在主类中运行,您需要实例化它,然后调用要运行的方法,因此您可能需要在主类中使用类似的方法

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

此外,没有为变量指定类型,在读取下一个int时,请将int置于前面,如下所示。nextInt()

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

import java.util.Scanner;

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

陈修诚
2023-03-14

您可以将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),您需要将其定义为静态方法,或者创建类的对象,然后调用该方法。

 类似资料:
  • 问题内容: 我需要使用一种方法将整数转换为罗马数字。后来,我必须使用该程序以罗马数字写出1到3999,这样就可以进行硬编码了。我下面的代码非常简单;它是一个基本的I / O循环,可以在使用getIntegerFromUser我们在课堂上制作的程序包时退出。 当我调用该方法时,是否可以将值赋给字符串,然后将它们添加在一起? 更新:我从教授那里得到了一些伪代码来帮助我,而在我理解他要说的内容的同时,我

  • 问题内容: 这是user2486所说的之后的当前代码。 我在使用ns时遇到此错误:UnboundLocalError:分配前引用了本地变量’ns’ 问题答案: 考虑一下此附加的伪代码和提示(其中一些是有效的Python,一些不是有效的,但有注释)。

  • 我正在尝试将罗马数字转换为阿拉伯数字。我取一个字符串并运行一个循环来检查每个字符的值。所以'M'将返回1000等。在罗马数字中,如果一个数字小于下一个,那么您需要减去它。所以'XL'或'10 50'将是40。这就是为什么我在for循环中有一个if语句,我在其中检查下一个字符并返回其值。稍后我将进行算术运算,但现在我只是尝试返回值。 我的问题是,它总是返回最后一个字符值两次。不管我输入2个字符还是1

  • 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100

  • 罗马数字包含以下七种字符:I,V,X,L,C,D和M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,