如果/ while语句不执行(java)

时间:2018-07-10 17:40:46

标签: java if-statement

我制作了一个public int,以便它返回的数字不同于其他整数。它应该返回9,但是,它只是给了我一个随机数,就像if语句不存在一样。

这是代码

import java.util.*;

static int sum1;
static int sum2 = 1;
static int sum3 = 2;
static int num1 = 3;
static int num2 = 4;
static int num3 = 5;
static int dum1 = 6;
static int dum2 = 7;
static int dum3 = 8;


public static int getNumbers()
{
    int holder;
    boolean numFound = false;
    holder = 1 + (int) (Math.random() * 9);

    if (holder == 0) while(numFound = false)
    {
        holder = 1;
        if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)
        {
            numFound = true;
        }
    } else {
        if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)
        {
            numFound = true;
        }
    }
    return holder;
}
public static void main(String[] args) throws InterruptedException {
    sum1 = getNumbers();
    System.out.println(sum1);

}

正在发生什么,我该怎么办?

2 个答案:

答案 0 :(得分:2)

您的代码可以简化为

holder = 1; /* or higher */

if (holder == 0)
{ /* all of the "while" ignored, because "if" is not true */
} else
{ /* always executed */
}

if似乎被忽略也不足为奇。

如果您打算在条件为真时检查if语句,那么最相似的代码将是

do
{
    if(conditioni)
    { /* then */
    } else
    { /* else */
    }
} while (conditionw);

或通过反转顺序

while (conditionw)
{
    if(conditioni)
    { /* then */
    } else
    { /* else */
    }
}

需要验证逻辑的详细信息,何时评估的顺序可能很重要。

答案 1 :(得分:0)

holder 初始化为1到9之间的随机数, holder 的最小可能值为1,所以 holder 永远不会零,并且紧跟 if 的值将永远不会等于 true ,并且while循环永远不会执行。

因此,每次运行该功能时,只会分配给 holder

的随机值
int holder;
boolean numFound = false;
holder = 1 + (int) (Math.random() * 9);

if (holder == 0) while(numFound = false)