首页 > 解决方案 > nextInt 对这段代码中的 Scanner 类做了什么?

问题描述

我有一个必须回答的课堂问题。

编写一个读取整数并计算它们总和的 do 循环。连续两次读取零或相同值时停止。例如,如果输入为 1 2 3 4 4,则总和为 14,循环停止。再举一个例子,如果输入是 4 5 1 0,那么总和是 10,循环停止。>

正确的代码是这样的。

    public static void integerCompute() {
        Scanner numberScanner = new Scanner(System.in);
        int x = 0; // Variable to keep track of user input
        int sum = 0; // Variable to keep track of sum
        int before; // Variable to check previously entered number
        
        do {
            before = x;
            System.out.println("Enter a number: ");
            x = numberScanner.nextInt(); // What does this do?
            sum += x;
        } while (x != 0 && before != x);

        System.out.println("Sum is: " + sum);
    }

在这个循环中,x = numberScanner.nextInt()指令做了什么?

标签: javaloopsdo-loops

解决方案


numberScanner将从中读取每个整数,System.in因为它知道每个数字都由空格分隔。numberScanner.nextInt()是说“给我读下一个整数。” 比如输入“5 10 15 20”,第一次numberScanner.nextInt()被调用,x会等于5。再调用一次,x会等于10。当你用完数字时,调用nextInt()会失败,因为没有更多可用的数字(您可以通过检查是否numberScanner.hasNext()等于真或假来检查是否还有更多数字)。


推荐阅读