我制作了一个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);
}
正在发生什么,我该怎么办?
答案 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)