我是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);
}
}
答案 0 :(得分:1)
停止等待输入: 输入一个字符作为输入:in.hasNextInt()返回False
答案 1 :(得分:0)
您的代码不会停止接受数字,直到获得数字以外的其他内容。
像字母字符一样。输入字母字符或将某些内容保留为终结符。
像输入-99一样退出。
答案 2 :(得分:0)
阅读代码我会说你希望用户输入一组用空格分隔的数字(扫描仪选择的默认分隔符) 扫描仪将无限循环解析输入。 现在您需要确定退出的条件并使代码更安全 当我说让你的vode更安全时,我的意思是试着抓住你的代码,以防用户没有写一个数字。此外,你应该最后关闭扫描仪。 如果您编写类似下面代码的内容,那么每当您写一封信时,周期就会被打破。例如2 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();
}
}
}