Java 在in.nextDouble()中遇到问题
我试图在下面的程序中使用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
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,任何流都是一样的,它一直等到得到数据或流关闭。让我去拿文件。