3 回答

TA貢獻1785條經驗 獲得超4個贊
這會起作用。我希望你能理解解決方案。如果解析失敗則 Integer.parseInt()拋出。NumberFormatException
void test() {
while (true) {
int aNumber;
try {
aNumber = Integer.parseInt(br.readLine());
System.out.println("Hurray you enterd a number! It is " + aNumber + ".");
return;
} catch (NumberFormatException | IOException e) {
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}

TA貢獻1779條經驗 獲得超6個贊
您的代碼不起作用,因為輸入字符串或除 之外的任何其他類型int都會生成 aNumberFormatException并且您沒有捕獲它。
if 語句是不必要的,因為只有給出文本時才會執行 catch 塊。轉換時將引發異常,因此下面的行將不會執行。
請檢查此代碼
void Test() {
while (true) {
try {
aNumber = Integer.parseInt(br.readLine());
System.out.println("Hurray you enterd a number! It is " + aNumber + ".");
return;
} catch (NumberFormatException | IOException e) {
e.printStackTrace();
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}

TA貢獻1864條經驗 獲得超2個贊
您可以做的最簡單的事情就是捕獲NumberFormatException然后打印您想要的消息。
請參閱下面的工作示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ReadNumber {
public static void main(String[] args) {
int aNumber = 0;
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
aNumber = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
System.out.println("That wasn't a number.");
continue;
} catch (IOException e) {
e.printStackTrace();
}
if (aNumber >= 1) {
System.out.println("Hurray you entered a number! It is " + aNumber + ".");
continue;
} else {
System.out.println("Error: Something went wrong. Please try again.\n");
}
}
}
}
添加回答
舉報