程序的重点是让用户不断地输入一定数量的整数(直到他们输入除整数以外的其他值),并且对于用户输入的每个整数,它应该检查整数是否大于或小于输入的值。
问题:程序运行时,一切正常,直到到达为止
number = scanner.nextInt();
在这一点上,用户输入了整数,但从未将其放入以下if语句中。我希望使用提示而不是答案,但是我会尽力而为。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Enter number: ");
int number = 0;
int minNumber = 0;
int maxNumber = 0;
boolean hasInt = scanner.hasNextInt();
if (hasInt) {
number = scanner.nextInt();
if (maxNumber < number) {
maxNumber = number;
}
if (minNumber > number) {
minNumber = number;
}
} else {
System.out.println("Your minimum number: " + number);
System.out.println("Your maximum number: " + maxNumber);
break;
}
} while (true);
scanner.close();
}
}
答案 0 :(得分:4)
您的minNumber
和maxNumber
声明应该放在循环之外。另外,您需要按如下所示初始化值,以便仅与输入值进行正确的最小和最大比较:
int minNumber = Integer.MAX_VALUE;
int maxNumber = Integer.MIN_VALUE;
在打印语句中,您正在打印minNumber
,而不是number
!
答案 1 :(得分:1)
它没有到达if语句,因为如果这样做,用户输入将更新为我认为的输入值。没有。它输出最初声明的值。
您没有得到正确的输出,并且有一个假设,原因是代码未输入if
语句。按照科学方法,下一步是检验您的假设。
如果将打印输出放在if
语句中,则会看到它们确实在运行。不是这个。错误必须在其他地方。您应该收集更多证据并提出新的假设。
提示:尝试在每次迭代的开始和结束时打印出变量的值。我在下面标记了地方。他们是您所期望的吗?您将看到一个异常,应该将您指向正确的方向。
do {
System.out.println("Enter number: ");
int number = 0;
int minNumber = 0;
int maxNumber = 0;
// Print number, minNumber, and maxNumber.
boolean hasInt = scanner.hasNextInt();
if (hasInt) {
number = scanner.nextInt();
if (maxNumber < number) {
maxNumber = number;
}
if (minNumber > number) {
minNumber = number;
}
} else {
System.out.println("Your minimum number: " + number);
System.out.println("Your maximum number: " + maxNumber);
break;
}
// Print number, minNumber, and maxNumber.
} while (true);