扫描器类别:同一行上的两个输入,以空格分隔

时间:2019-07-05 18:48:33

标签: java

在下面的代码中:

import java.util.Scanner;

class A
{
    public static void main()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the first number: ");
        int a = sc.nextInt();
        System.out.println("Enter the second number: ");
        int b = sc.nextInt();

        System.out.println(a);
        System.out.println(b);
    }
}

如果在显示第一条消息后,我在一行中输入两个数字(用空格分隔),则将同时输入这两个数字,然后显示第二条消息。为什么会这样?

1 个答案:

答案 0 :(得分:1)

nextInt()会为您提供下一个输入,无论输入是否在同一行上。

要仅获取每行的第一个值,可以在两次调用sc.nextLine()的过程中使用sc.nextInt()来消耗行终止符并移至下一行:

System.out.println("Enter the first number: ");
int a=sc.nextInt();

sc.nextLine(); //Place this to ensure other inputs on same line don't matter

System.out.println("Enter the second number: ");
int b=sc.nextInt();

//Without the nextLine it will set c to the next int even on same line as b

System.out.println("Enter the third number: ");
int c=sc.nextInt();

System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);

测试运行:

Enter the first number: 
1 2 3 4 5
Enter the second number: 
78 89 99
Enter the third number: 

输出:

a = 1
b = 78
c = 89

如您所见,扫描仪只会将a设置为1并忽略2 3 4 5,然后等待下一行的b下一个输入并进行设置b78

但是,c将被设置为89,因为没有通知scanner移至下一行,然后print语句将在之后运行,而不能选择输入任何内容。