我是一名学生正在编写这个程序,假设将Tsubo转换为(ft²)。我对这个源代码没有任何问题,但是我担心我在测试时遇到的问题可能会失误。问题是当被要求输入一个整数时,如果我输入一个字母或符号,那么我会得到一个错误,使程序完全停止。这是我的方法:
public static void tsubo(){
Scanner keyboard = new Scanner(System.in);
int tsubo;
double product;
System.out.println("\nPlease enter Tsubo to convert to (ft²): ");
tsubo = keyboard.nextInt();
product = tsubo * 35.58;
System.out.println("Your conversion equals\n" + product + "(ft²)" + "\n");
}
当要求输入整数时,如果输入字母或符号,我该怎么做才能阻止此错误发生?
答案 0 :(得分:0)
从运行您编写的代码开始,当使用字母或符号调用时,调用tsubo = keyboard.nextInt();
会抛出java.util.InputMismatchException
。
来自javadoc:
由扫描程序抛出,表示检索到的令牌与预期类型的模式不匹配,或者令牌超出预期类型的范围。
在您的情况下,您所要做的就是将该行包装在try-catch块中并结束程序,以便它不会尝试计算任何内容:
try {
tsubo = keyboard.nextInt();
} catch(InputMismatchException e) {
System.out.println("Please input a number, not a letter or symbol.");
return;
}
,输入符号或字母后,将打印:
Please input a number, not a letter or symbol.
答案 1 :(得分:-1)
int变量tsubo尚未初始化。局部变量不会在Java中自动初始化。