簡體   English   中英

用戶輸入從不進入 if 語句

[英]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();
    }
}

您的minNumbermaxNumber聲明應該在循環之外。 此外,您需要初始化以下值,以便僅與輸入的值進行正確的最小值和最大值比較:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM