0

我是 Java 初学者,对我正在做的作业有疑问。

我正在尝试读取一系列整数输入并打印出最大和最小的数字。虽然我已经编写了代码,但问题是当我运行它时,它不会打印最大或最小的数字。该代码似乎正确,即使它不是!任何帮助,将不胜感激。

import java.util.Scanner;

public class Practice {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.print("Enter integers: ");

        int largest = in.nextInt();
        int smallest = largest;

        while (in.hasNextInt()) {
            int input = in.nextInt();

            if (input > largest) {
                largest = input;
            } else if (input < smallest) {
                smallest = input;
            }
            System.out.println();

        }

        System.out.println(largest);
        System.out.println(smallest);
    }
}
4

3 回答 3

1

停止等待输入:输入一个字符作为输入:in.hasNextInt() return False

于 2013-09-08T18:53:12.850 回答
0

您的代码不会停止接受数字,直到它得到数字以外的东西。

就像一个字母字符。输入字母字符或保留某些内容作为终止符。

比如输入-99退出什么的。

于 2013-09-08T18:56:33.967 回答
0

阅读代码我会说您希望用户输入一组由空格分隔的数字(扫描仪选择的默认分隔符)扫描仪将循环无休止地解析输入。现在您需要确定退出条件并使代码更安全。
当我说让你的投票更安全时,我的意思是在你的代码周围放一个 try catch,以防用户不写数字。此外,您应该在最后关闭扫描仪。如果您编写类似于以下代码的内容,则每当您写信时,循环就会中断。例如 1 2 4 6 A 将打印 2 和 6。把它作为一个建议来解决一下。实际上。您仍然需要保护第一个 nextInt,如果您不以数字开头并且理想情况下决定处理其他异常的退出字符,则它可能会引发异常。但这些是实现细节。如果您以数字开头并以与数字不同的字符结束,则下面的代码将起作用

    import java.util.Scanner;

    public class Practise {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("Enter integers: ");

            int largest = in.nextInt();
            int smallest = largest;
            try {
                while (in.hasNextInt()||in.hasNext()) {
                    int input = in.nextInt();

                    if (input > largest) {
                        largest = input;
                    } else if (input < smallest) {
                        smallest = input;
                    }
                    System.out.println("Computing "+input);
                } 

                System.out.println(largest);
                System.out.println(smallest);
            } catch (Exception ex) {
                System.out.print("Exception caught: " + ex);
            } finally {
                in.close();
            }
        }
    }
于 2013-09-08T19:36:03.110 回答