在in.nextDouble()遇到问题

时间:2015-08-14 09:53:27

标签: 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("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())时,我还没有初始化,为什么循环有效呢?

1 个答案:

答案 0 :(得分:5)

当您在没有输入时致电in.hasNextXXX()时,Scanner 会等待进行输入。

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

只要您输入而不是双(并按回车键),它就会退出。

Scanner#hasNext()

的文件
  

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

适用于所有hasNextXXX()操作。