[英]User input never enters if statement
該程序的要點是讓用戶無休止地輸入整數數量(直到他們輸入的不是整數),並且對於用戶輸入的每個 integer,它應該檢查 integer 是否大於或小於輸入的值.
問題:當程序運行時,一切都很好,直到到達
number = scanner.nextInt();
此時,用戶輸入他們的 integer,但從未在以下 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();
}
}
您的minNumber
和maxNumber
聲明應該在循環之外。 此外,您需要初始化以下值,以便僅與輸入的值進行正確的最小值和最大值比較:
int minNumber = Integer.MAX_VALUE;
int maxNumber = Integer.MIN_VALUE;
在 print 語句而不是minNumber
中,您正在打印number
!
它沒有到達 if 語句,因為如果它到達了,用戶輸入將更新為我認為輸入的值。 它沒有。 它輸出最初聲明的值。
您沒有得到正確的 output 並且您假設原因是代碼未輸入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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.