如果while语句中的语句不起作用(java) [英] If statement in while statement doesn't work (java)
问题描述
我尝试制作一些行,检查随机生成的数字是否等于其他整数的数量,如果不是,则返回该数字,如果不是,则重复。
以下是代码:
I tried to make a couple lines that checks if a random generated number is equal to a number of other integers if it's not, it returns that number, if not it repeats.
Here's the code:
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);
while(numFound = false)
{
if (holder == 0)
{
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;
}
}
}
最终应打印9。但是,它只打印出随机数,就像while语句一样。怎么了?
我尝试过的事情:
我是尝试将
It should just print out 9 eventually. But, it just prints out random numbers like the while statement isn't even there. What's wrong?
What I have tried:
I've tried changing the
Math.random()
方法更改为java.util.Random,
method into the java.util.Random,
Random rand = new Random(9)
推荐答案
=是一个赋值,而不是一个比较:
"=" is an assignment, not a comparison:
while(numFound = false)
尝试:
while(numFound == false)
Original Griff已经回答了你的问题。让我改进你的整体编码。
Original Griff already answered your question. Let me improve your overall coding.
// all these sum, num, dum, can't you think something better? How about array?
static int sum1; // You are using default value of sum1; clever but bad practice;
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);
// even if you write the right syntax as OriginalGriff suggested. And your holder is not between 0-8; your function will stuck in an infinte loop. because holder is going to be always false
while(numFound = false)
{
if (holder == 0)
{
holder = 1;
if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)
{
// if your code reach here, you code will not reach else. common sense; but if you code do not reach here why do you think it will reach if of "else"?
numFound = true;
}
} else {
if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)
{
numFound = true;
}
}
}
怎么解决?解决几个问题
1.如何而不是声明每个数字,然后声明为数组
2.在while循环中移动持有者生成;所以,如果if条件说错,它将重新生成数字
3.检查数字是否属于数组,要么写一个函数来检查数组是否包含你生成的数字,或者你可以使用以下建议,在stackoverflow中描述 java - 我该怎么办?测试数组是否包含某个值? - 堆栈溢出 [ ^ ]
这篇关于如果while语句中的语句不起作用(java)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!