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)