如果输入的第一个数字是输入的所有数字中的最大值或最小值,则程序不会将该值视为最小值或最大值。我做错了什么?
Scanner in = new Scanner(System.in);
System.out.println("Please enter a set of integers: ");
System.out.println("When done entering, enter a non integer (e.g. a floating-point number or string).");
int smallest = in.nextInt();
int largest = in.nextInt();
while (in.hasNextDouble()) {
int input = in.nextInt();
if (input > largest) {
largest = input;
}
else {
}
if (input < smallest) { //doesn't include first input?
smallest = input;
}
else {
}
}
System.out.println("Maximum: " + largest);
System.out.print("Minimum: " + smallest);
in.close();
}
}
最佳答案
我对你的代码做了一些优化。您正在检查 nextDouble,但如果它的计算结果为 true,则循环将继续,并且程序停止的原因是抛出异常。除此之外,在你的系统中你说它也可以是一个字符串。您还决定第一个输入是最小的,第二个输入是最大的。这可能会导致有趣的问题(如果我按顺序输入 10、1、5.5,它会告诉我最小的是 10,最大的是 1)。我编写的代码仍然无法输入任何整数,但您尚未指定这种情况的预期行为。
Scanner in = new Scanner(System.in);
System.out.println("Please enter a set of integers: ");
System.out.println("When done entering, enter a non integer (e.g. a floating-point number or string).");
int smallest = Integer.MAX_VALUE;
int largest = Integer.MIN_VALUE;
while (in.hasNextInt()) {
int input = in.nextInt();
if (input > largest) {
largest = input;
}
if (input < smallest) {
smallest = input;
}
}
System.out.println("Maximum: " + largest);
System.out.println("Minimum: " + smallest);
in.close();
关于java - 为什么不考虑输入的第一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60888388/