输入是字母时的错误&符号而不是被要求的Int

时间:2016-03-06 19:18:57

标签: java

我是一名学生正在编写这个程序,假设将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");
}

当要求输入整数时,如果输入字母或符号,我该怎么做才能阻止此错误发生?

2 个答案:

答案 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中自动初始化。