我想我有适当的代码来进行转换(感谢用户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";
}
}
要使它在主类中运行,您需要实例化它,然后调用要运行的方法,因此您可能需要在主类中使用类似的方法
romannumeralconversion rnc = new romannumeralconversion();
System.out.println(rnc.ToRoman());
此外,没有为变量指定类型,在读取下一个int时,请将int置于前面,如下所示。nextInt()
您还需要将以下导入语句放在类文件的最顶部以导入Scanner
类(刚刚意识到您确实有这个)
import java.util.Scanner;
注意,惯例是类以大写字母开头,方法应以每个内部单词的首字母大写命名。请参见java命名约定。
您可以将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,