If/while语句不';t执行(java)

If/while语句不';t执行(java),java,if-statement,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 dum

我做了一个
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);

}

发生了什么,我可以做些什么来修复它?

您的代码可以简化为

holder = 1; /* or higher */

if (holder == 0)
{ /* all of the "while" ignored, because "if" is not true */
} else
{ /* always executed */
}
if
似乎被忽略了,这并不奇怪

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

do
{
    if(conditioni)
    { /* then */
    } else
    { /* else */
    }
} while (conditionw);
或者颠倒顺序

while (conditionw)
{
    if(conditioni)
    { /* then */
    } else
    { /* else */
    }
}
需要验证逻辑的细节,评估的顺序可能很重要

holder使用1到9之间的随机数初始化,holder的最低可能值为1,因此holder永远不会为零,if后面的值永远不会计算为true,while循环永远不会执行

因此,每次运行时,函数将只显示分配给holder的随机值


holder何时等于0?如果(holder==0)而(numFound=false),请解释这一行。您希望它做什么?它是
而(numFound=false)
不执行的。它应该是
while(numFound==false)
或者更好的是,
while(!numFound)
。投票结束是一个输入错误。(numFound=false)==>(numFound==false)当您将randon数字添加到1时,您的持有者将始终大于1。因此,如果(holder==0)永远不会为真,那么将执行else。谢谢!它起作用了
int holder;
boolean numFound = false;
holder = 1 + (int) (Math.random() * 9);

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