我需要帮助(逻辑)

时间:2014-09-06 16:37:16

标签: java

我的代码没有语法错误,但是当我启动程序时,我没有在控制台中收到消息,因为我应该得到

class verschlüsselung {

    private static void search(int b, int a) {

        b = 1;
        Random r = new Random();
        a = r.nextInt(9);
        System.out.println(a);

        while (a != b) {
            for (b = 0; b == 9; b++) {
                if (b == a) {
                    System.out.println("found the number " + b);
                }
            }
        }
    }

    public static void main(String args[]) {
        search(0, 0);
    }
}

我感谢每一个解释。

3 个答案:

答案 0 :(得分:0)

你的循环中的条件应该是b < 9,否则你永远不会进入它的身体。但是,做你想做的最好的方法是:

b = 0;
while (a != b) b++;
System.out.println("found the number " + b);

答案 1 :(得分:0)

两个问题:

  1. 就像其他人提到的那样:你应该用b == 9切换b < 9(以便在b小于9时执行for循环体)
  2. 在“找到数字”打印之后,您应该添加return;语句 - 否则您可能会进入无限(while)循环。

  3. while (a != b) {
        for (b = 0; b < 9; b++) { // b < 9
            if (b == a) {
                System.out.println("found the number " + b);
                return; // second change
            }
        }
    }
    

    更多评论:

    • 没有必要将ab作为search()的参数传递,因为您要做的第一件事就是重新分配它们。
    • b仅用于for循环,无需在更广的范围内声明
    • while循环是不必要的

    以下代码将执行相同的操作:

    public static void main(String[] args) {
        search();
    }
    
    private static void search() {    
        Random r = new Random();
        int a = r.nextInt(9);
    
        for (int b = 0; b < 9; b++) {
            if (b == a) {
                System.out.println("found the number " + b);
                return;
            }
        }    
    }
    

    值得一提的是,既然我们没有包装while循环,即使我们将删除return语句,代码仍然可以工作!

答案 2 :(得分:0)

首先,您可能会错误地使用for循环,

for(b=0;b == 9; b++)

b==9是必须满足的条件。显然,这种情况永远不会满足,因为b = 0在第一步。

所以,

for (b = 0; b < 9; b++)

很好。

找到a==b后,您必须打破while循环。

 while (a != b) {
        for (b = 0; b < 9; b++) {
            if (b == a) {
                System.out.println("found the number " + b);
                break;
            }
        }
    }

实际上,while循环没用,流动就足够了,

for(b = 0; b < 9; b++)
        {
             if (b == a) {
                 System.out.println("found the number " + b);
                 break;
             }
        }