首页 > 解决方案 > if/while 语句不执行 (java)

问题描述

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

}

发生了什么,我能做些什么来解决它?

标签: javaif-statement

解决方案


您的代码可以简化为

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 */
    }
}

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


推荐阅读