[英]Trouble with Java scanners, printing in while loops
该代码将整数作为输入,直到输入非整数为止。 然后打印最高和最低输入。 照原样,代码有效。
从最初的print语句到while循环的第一次完整迭代,为什么它不多次打印“输入整数:”(第一次在循环之前,在in.hasNextInt()之后再次返回true)?
import java.util.Scanner;
public class MaxMinPrinter
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
System.out.print("Enter an integer: ");
while (in.hasNextInt()){
System.out.print("Enter an integer: ");
int x = in.nextInt();
if (x > max){max = x;}
if (x < min){min = x;}
}
System.out.println(max);
System.out.println(min);
}
}
我的印象是,该代码应:i)打印,然后ii)要求输入以进入while循环,然后iii)进行第二次打印,并且iv)将扫描仪的“光标”移动到下一个令牌,并可能分配新的最大值或最小值。 为什么在第一次迭代中没有第二次打印? 还是我误解了扫描仪类的用法?
谢谢你的帮助。
hasNextInt()的javadoc:
* Returns true if the next token in this scanner's input can be
* interpreted as an int value in the default radix using the
* {@link #nextInt} method. The scanner does not advance past any input.
因此,基本上程序正在等待hasNextInt()的输入。 如果以调试模式运行,并且将调试点保留在while循环的第一行,则将看到它在第一次输入后命中调试点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.