Java 在in.nextDouble()中遇到问题

Java 在in.nextDouble()中遇到问题,java,while-loop,Java,While Loop,我试图在下面的程序中使用in.nextDouble()方法来计算几个数字的平均值 import java.util.Scanner; public class Average { public static void main(String[] args) { Scanner in = new Scanner(System.in); double value; int count = 0; double sum = 0; System.out.print

我试图在下面的程序中使用in.nextDouble()方法来计算几个数字的平均值

import java.util.Scanner;

public class Average
{
public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    double value;
    int count = 0;
    double sum = 0;
    System.out.print("Enter a value, Q to quit: ");
    while (in.hasNextDouble())
    {
            value = in.nextDouble();
            sum = sum + value;
            count++;
            System.out.print("Enter a value, Q to quit: ");
    }
    double average = sum / count;
    System.out.printf("Average: %.2f\n", average);
}
}

虽然我不明白为什么,但这段代码仍然有效。当我第一次使用while(in.hasNextDouble())时,我还没有初始化任何内容,那么为什么循环会工作?

当你调用in.hasNextXXX()时,当没有输入时,
扫描仪等待输入

因此,它等待您在第一种情况下输入一个值

当您输入双精度(并按enter键)以外的内容时,它将立即退出

Scanner的文档#hasNext()

如果此扫描仪的输入中有另一个令牌,则返回true在等待输入扫描时,此方法可能会阻塞。扫描仪不会超过任何输入


这适用于所有
hasNextXXX()
操作。

这更有意义。。。你有没有解释过这种等待的文档链接?@Jordi,任何流都是一样的,它一直等到得到数据或流关闭。让我去拿文件。