我试图在下面的程序中使用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())时,我还没有初始化,为什么循环有效呢?
答案 0 :(得分:5)
当您在没有输入时致电in.hasNextXXX()
时,Scanner
会等待进行输入。
因此,等待您在第一种情况下输入值。
只要您输入而不是双(并按回车键),它就会退出。
Scanner#hasNext()
如果此扫描器的输入中有另一个标记,则返回true。 此方法可能会在等待扫描输入时阻止。扫描仪不会超过任何输入。
适用于所有hasNextXXX()
操作。