else语句不会在if else语句中执行

时间:2017-02-16 08:28:50

标签: java if-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");
            }
        }

    }

}

3 个答案:

答案 0 :(得分:4)

if (validnum[i] <= 101 || validnum[i] >= 49) {将始终评估为true,因此将打印“是”并i递增,除非i超出数组的范围。

||替换为&&

同时考虑编写int[] validnum = new int[5];而不是分开两个步骤。这样,validnum永远不会处于未初始化的状态,这往往会导致更稳定的程序。

答案 1 :(得分:0)

您的代码中有无限循环,当validnum[i]无法满足您的条件时,您不会提升循环索引。 从[{1}}中取出i++;或将if循环替换为(注意:如果您使用的话,请不要while i++;循环):

for

为什么要使用数组?在您发布的代码中,它看起来像浪费内存。

答案 2 :(得分:0)

根据您的业务逻辑,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