我正在编写一个程序,它将从罗马数字转换为十进制数字。为什么代码不响应并继续运行?
由于某种原因,它在检查用户输入时不返回值。但它已经修复,
我现在面临的是:代码没有回应我的号码(它保持在输入后显示一个空白屏幕)。
我该如何解决这个问题?我的代码中有问题吗?我只是一个初学者,所以我所学到的只是基本的东西。
public static void main(String[] args) {
// Fill in the body
Scanner in= new Scanner(System.in);
String user = promptUserForNumeral(in);
while (user.length()!=0) {
int numb= convertNumeralToNumber(user);
System.out.println("The numeral "+user+ " is the decimal number "+numb);
user = promptUserForNumeral(in);
}
}
private static String promptUserForNumeral(Scanner inScanner) {
// Fill in the body
System.out.println("Enter a roman numeral (Q to quit): ");
String i = inScanner.nextLine();
while (i.length()<=0) {
System.out.println("ERROR! You must enter a non-empty line!");
System.out.println("Enter a roman numeral (Q to quit): ");
i = inScanner.nextLine();
}
if (i.equalsIgnoreCase("q")) {
System.out.println("Goodbye!");
System.exit(0);
}
return i;
}
private static int convertNumeralToNumber(String numeral) {
// Fill in the body
int numb = 0;
int n=0;
int ch=0;
while (n<numeral.length()) {
char l= numeral.charAt(n);
numb=convertCharacterToNumber(l);
if (numb<0) {
System.out.println("Cannot be define");
n++;
}
else if (n==numeral.length()) {
ch+=numb;
}
else {
int nnumb=convertCharacterToNumber(numeral.charAt(n));
if (nnumb>numb) {
ch+=nnumb-numb;
n++;
}
else {
ch+=numb;
}
}
}
if (ch>3999) {
System.out.println("Input number must be less than 3999");
numb=ch;
}
return numb;
}
private static int convertCharacterToNumber(char numeral) {
// Fill in the body
int n=0;
if (numeral=='m' || numeral =='M') {
return 1000;
}
else if (numeral=='d' || numeral=='D') {
return 500;
}
else if (numeral=='c' || numeral=='C') {
return 100;
}
else if (numeral=='l' || numeral=='L') {
return 50;
}
else if (numeral=='x' || numeral=='X') {
return 10;
}
else if (numeral=='v' || numeral=='V') {
return 5;
}
else if (numeral=='i' || numeral=='I') {
return 1;
}
else {
return -1;
}
}
}
什么具体不返回一个值?你不能指望任何人在没有暗示从哪里开始寻找问题的情况下翻阅一段代码。你能否进一步解释哪些工作不正常? – 2014-11-04 04:02:22
当用户输入罗马数字时,它会检查它是否合法,在第一种方法中。所以如果它合法,它将返回什么用户输入 – bscouth 2014-11-04 04:23:30