Java 而循环和困难

Java 而循环和困难,java,while-loop,Java,While Loop,我是Java的初学者,对我正在做的作业有一个问题 我试图读取整数输入序列并打印出最大和最小的数字。虽然我已经编写了代码,但问题是当我运行它时,它不会打印最大或最小的数字。代码似乎是正确的,尽管它不是!任何帮助都将不胜感激 import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner in = new Scanner(System.in)

我是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);
    }
}
import java.util.Scanner;
公共课堂实践{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.print(“输入整数:”);
int最大=in.nextInt();
int最小=最大;
while(在.hasNextInt()中){
int input=in.nextInt();
如果(输入>最大值){
最大=输入;
}else if(输入<最小值){
最小=输入;
}
System.out.println();
}
系统输出打印项次(最大);
系统输出打印项次(最小);
}
}

要停止等待输入,请执行以下操作:
输入一个字符作为输入:在.hasNextInt()中返回False

您的代码将不会停止接受数字,直到它获得数字以外的内容

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


比如输入-99退出或其他什么。

阅读代码时,我会说您希望用户输入一组以空格分隔的数字(扫描仪选择的默认分隔符) 扫描仪将循环分析输入。 现在您需要决定退出的条件,并使代码更安全。
当我说让你的视频点播更安全的时候,我的意思是在你的代码周围放一个尝试捕捉,以防用户不写数字。此外,您应该在最后关闭扫描仪。 如果你写了下面的代码,那么每当你写一封信的时候,这个循环就被打破了。例如,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();
            }
        }
    }
import java.util.Scanner;
公开课实习{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.print(“输入整数:”);
int最大=in.nextInt();
int最小=最大;
试一试{
while(in.hasNextInt()| | in.hasNext()){
int input=in.nextInt();
如果(输入>最大值){
最大=输入;
}else if(输入<最小值){
最小=输入;
}
System.out.println(“计算”+输入);
} 
系统输出打印项次(最大);
系统输出打印项次(最小);
}捕获(例外情况除外){
系统输出打印(“捕获异常:+ex”);
}最后{
in.close();
}
}
}

您是如何运行该应用程序的?您是否将文件作为输入?请发布您输入的编号顺序否,我要求人们输入输入。在他们输入输入后,我想打印出他们输入的最大和最小的数字。可能当用户键入一段特定的文本(如“退出”)或其他内容时,它应该停止。如果您以某种方式得到in.hasNextInt返回false,则此代码应该可以工作。+1因为这是一个快速解决您已有问题的方法。但是,我相信,通过添加quit命令,您可以改进您的程序。