for loop正在跳到最后?

时间:2016-01-06 04:19:56

标签: java for-loop

我对Java很新,但我的for循环会立即跳到以下代码中的最高值:

System.out.println(i);
    for(i = 0; i <= (difficulty - 2); i++);{
        System.out.println(i);
        nextMineX = (int) (10*Math.random());
        nextMineY = (int) (10*Math.random());

        for(y = 0; y <= 14; y++){
            System.out.println(y);
            if(nextMineX == minesX[y] && nextMineY == minesY[y]){
                i = i-1;
            } else{
                minesX[i] = nextMineX;
                minesY[i] = nextMineY;
            }
        }
    }

第一个for循环是搞砸了,而嵌套的循环正常运行。变量i初始化为0,难度为16.此摘录的输出如下:

0
14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14

如果有人可以帮助我,那将非常感激。因为我是新手,所以我可能会忽略一些小而基本的东西。

3 个答案:

答案 0 :(得分:-1)

问题是第二行末尾的分号。有一个没有正文的for循环是有效的。在括号内放置一个独立的代码块也是有效的(这定义了变量的范围 - 如果你在括号内定义了一个变量,它就不会在外面可用)。所以Java正在解释你的代码的开头:

for(i = 0; i <= (difficulty - 2); i++); // for loop is done, so i = difficulty - 2

{
    System.out.println(i);
    ...

答案 1 :(得分:-1)

您的for循环语句以您使用的分号结尾

for(i = 0; i <= (difficulty - 2); i++); <- incorrect

for(i = 0; i <= (difficulty - 2); i++){ <- correct
     //body
}

答案 2 :(得分:-1)

For循环是终止分号;

的原因
for(i = 0; i <= (difficulty - 2); i++); //semicolon terminating loop
{...}

所以你应该像这样使用for循环

for(i = 0; i <= (difficulty - 2); i++) //remove semicolon prevent to terminate
    {...}