如果while语句中的语句不起作用(java) [英] If statement in while statement doesn't work (java)

查看:112
本文介绍了如果while语句中的语句不起作用(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆