2

我正在为我在在线教程中找到的冰雹序列编写代码,但在这样做时我遇到了无法访问的语句错误。我不知道我的代码是否正确,如果我错了,我不希望得到纠正它的建议(关于冰雹序列,我想自己这样做..:))。我只想帮助解决第 19 行的“无法访问的语句”错误。

class HailstoneSequence {
    public static void main(String[] args) {
        int[][] a = new int[10][];
        a[0][0] = 125;
        int number = 125;

        for (int i = 0;; i++) {
            for (int j = 1; j < 10; j++) {
                if (number % 2 == 0) {
                    a[i][j] = number / 2;
                    number = number / 2;
                } else {
                    a[i][j] = (number * 3) + 1;
                    number = (number * 3) + 1;
                }
            }
        }

        for (int i = 0;; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println(a[i][j]);
            }
        }
    }
}
4

7 回答 7

10

这是一个无限循环:

for(int i=0;;i++){

之后发生的任何事情都不会被执行(即无法访问)。

于 2014-08-08T14:56:43.330 回答
5

在您的第一个 for 循环中:

for(int i=0;;i++){
....
}

您没有定义结束条件。例如

for(int i=0; i<10; i++){
....
}

因此循环永远不会退出。

于 2014-08-08T14:57:18.593 回答
3

您的第一个无限循环会for(int i=0;;i++)阻止到达任何其他代码。

于 2014-08-08T14:56:33.767 回答
2

有一个无限循环@第 7 行

于 2014-08-08T14:57:04.563 回答
2

You forgot to set an exit condition

for(int i=0;here;i++){

This might create unexpected behaviour.

于 2014-08-08T14:57:48.003 回答
1

您的第一个 for 语句(在第 6 行)是一个无限循环,因此它会阻止进一步的代码到达。

for(int i=0;;i++)
于 2014-08-08T15:12:29.693 回答
0

您在第一个 for 循环中的第 6 行有问题。

 for(int i=0;;i++) {

在这里,由于您没有任何退出条件,因此代码将进入无限循环并且循环永远不会退出。由于您的第一个循环永远不存在,因此此 for 循环范围之外的任何内容都将无法访问。

考虑在 for 循环中添加退出条件(例如breakreturn等)以防止这种行为。

于 2014-08-08T15:15:53.860 回答