簡體   English   中英

else語句不會在if else語句中執行

[英]else statements won't execute in an if else statement

由於某種原因,無論我做什么,每次我在Java程序中創建if else語句時,它要么只執行if語句,要么執行if和else語句。

import java.util.Scanner;

public class Week06_NelsonPimentel_Assignment {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] validnum;
        int i = 0;
        validnum = new int[5];

        System.out.println("Please enter a number between 50 and 100");

        while (i < validnum.length) {
            validnum[i] = input.nextInt();

            if (validnum[i] <= 101 || validnum[i] >= 49) {
                System.out.println("yes");
                i++;
            } else {
                System.out.println("no");
            }
        }

    }

}

if (validnum[i] <= 101 || validnum[i] >= 49) {將始終為true ,因此將打印“ yes”並遞增i ,除非i當然不在數組范圍之內。

替換|| &&

還可以考慮編寫int[] validnum = new int[5]; 而不是具有兩個單獨的步驟。 這樣, validnum永遠不會處於未初始化狀態,這會導致程序更穩定。

您的代碼中有一個無限循環 ,當validnum[i]不滿足您的條件時,您不會推進循環索引。 i++; 出來的if或更換while與循環( 注:你不NEET i++;如果您使用for循環):

for (int i = 0; i < validnum.length; i++) {
        validnum[i] = input.nextInt();

        if (validnum[i] <= 101 || validnum[i] >= 49) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
}

為什么使用數組? 在您發布的代碼中,這似乎浪費了內存。

根據您的業務邏輯,if語句將始終返回true。

我的觀察:請輸入50到100之間的數字。

validnum[i] = input.nextInt();
if (validnum[i] <= 101 || validnum[i] >= 49) {
}

無論您輸入的是50到100之間還是小於50或大於100之間,if語句將始終滿足以下條件之一

validnum[i] <= 101 
validnum[i] >= 49

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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