我需要將數值轉換爲羅馬數字,我遇到了一些麻煩。當我測試我的代碼並且用戶輸入一個數字時,代碼會將其轉換爲羅馬數字,但是我無法在提示後再次出現;在放置了錯誤的整數後它會重新提示,但不會在正確的整數之後重新提示。我不知道如何製作,以便用戶可以繼續轉換值,直到他們選擇-1退出。 以下是我到目前爲止所提出的。如何重新提示以允許用戶繼續轉換值?
import java.util.Scanner;
public class arabicToRoman {
static String a = "";
public static void main (String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Enter a number between 1 and 3999 (-1 to quit): ");
while (!input.hasNext("-1")) {
String a = input.next();
try {
Integer number = Integer.parseInt(a);
if ((number <= 3999) && (number > 0)) {
System.out.println(arabicToRoman(number));
} else if (number > 3999) {
System.out.println("Error: number must be between 1 and 3999");
} else if (number == 0) {
System.out.println("Error: The Romans did not have a way to represent negative numbers or zero.");
} else {
System.out.println("Error: The Romans did not have a way to represent negative numbers or zero.");
}
} catch (NumberFormatException e) {
System.out.println("You did not enter a number!");
}
}
}
public static String arabicToRoman(int arabic) {
while (arabic >= 1000){
a += "M";
arabic -= 1000;
}
while (arabic >= 900){
a += "CM";
arabic -= 900;
}
while (arabic >= 500){
a += "D";
arabic -= 500;
}
while (arabic >= 400){
a += "CD";
arabic -= 400;
}
while (arabic >= 100){
a += "C";
arabic -= 100;
}
while (arabic >= 90){
a += "XC";
arabic -= 90;
}
while (arabic >= 50){
a += "L";
arabic -= 50;
}
while (arabic >= 40){
a += "XL";
arabic -= 40;
}
while (arabic >= 10){
a += "X";
arabic -= 10;
}
while (arabic >= 9){
a += "IX";
arabic -= 10;
}
while (arabic >= 5){
a += "V";
arabic -= 5;
}
while (arabic >= 4){
a += "IV";
arabic -= 4;
}
while (arabic >= 1){
a += "I";
arabic -= 1;
}
return a;
}
}
進入輸入後,它似乎顯示結果,但沒有提示後,用戶可以輸入但是別的東西,它會讀它;如果它是另一個數字,則結果會添加到前一個結果中。
我試着調用這個方法並打印出結果並且工作,但之後每個值都被添加到前一個值中。另外,在應用你的例子之後,現在我似乎沒有得到任何提示。 – User121x 2014-11-09 09:10:24
我的觀點是,在寫這些時,你不需要任何'return'語句或'System.exit(0)'。我的例子應該工作 - 我只是測試它。確保如果你使用它,它是你主要方法中唯一的東西。也許你應該更新你的帖子,包括你嘗試過的新代碼。 – 2014-11-09 15:44:03
我明白了。我確實沒有返回和'System.out.println(arabicToRoman(number))';'它試了一下,但我的問題是之後的任何正確的輸入被添加到前一個。我用我試過的新代碼更新了我的帖子 – User121x 2014-11-09 18:13:09