扫描程序不会在else语句中读取输入

时间:2017-11-03 22:34:10

标签: java

我试图向用户询问两个号码。我想检查这些输入是否实际上是数字,但是如果第一个输入是一个字符串,我到目前为止的代码不允许我输入第二个值。

因此扫描仪不读取任何其他声明。

我怎么能让它起作用?

import java.util.Scanner;

public class calculations {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        System.out.print("Please enter your first name: ");
        String fname = console.nextLine();
        System.out.print("Please enter your last name: ");
        String lname = console.nextLine();
        System.out.print("Please enter your first number: ");
        if (console.hasNextInt()) {
            int number1 = console.nextInt();
            System.out.print("Please enter your second number: ");
            if (console.hasNextInt()) {
                int number2 = console.nextInt();
            }
        } else
            System.out.print("Please enter your second number: ");
        if (console.hasNextInt()) {
            int number2 = console.nextInt();
            // this part does not work
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您只需在console.nextLine();语句后添加else,因为Scanner.hasNextInt方法不会将光标移动到您之前的输入(如果它是字符串)。