繁体   English   中英

Java扫描器出现问题,在while循环中打印

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM