繁体   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