Java <identifier>预期错误?</identifier>

时间:2011-07-01 14:00:36

标签: java compiler-errors

编译此程序时,我在循环中得到20个错误;以下只是一个片段:

public static long[] bishopsMasks()
{
    long[] masks = new long[64];

    for (int j = 0; j < 8; j++)
    {
        for (int i = 0; i < 8; i++)
        {
            long x = 0L;

            for (int a = i + 1, int b = j + 1; a < 7 && b < 7; a++, b++)
                x |= bit(a, b);

            for (int a = i + 1, int b = j - 1; a < 7 && b > 0; a++, b--)
                x |= bit(a, b);

            for (int a = i - 1, int b = j + 1; a > 0 && b < 7; a--, b++)
                x |= bit(a, b);

            for (int a = i - 1, int b = j - 1; a > 0 && b > 0; a--, b--)
                x |= bit(a, b);

            masks[i + j * 8] = x;
        }
    }

    return masks;
}

我发现它没有任何问题!

3 个答案:

答案 0 :(得分:8)

您不能在for循环初始值设定项中声明多个变量,如下所示:

for (int a = i + 1, int b = j + 1; a < 7 && b < 7; a++, b++)

但是,您可以执行此操作(请注意在int之前删除b):

for (int a = i + 1, b = j + 1; a < 7 && b < 7; a++, b++)

但是,这意味着变量必须是相同的类型。

有关详细信息,请参阅Java language specification section 14.14.1

答案 1 :(得分:5)

删除int之前的b

public static long[] bishopsMasks()
{
    long[] masks = new long[64];

    for (int j = 0; j < 8; j++)
    {
        for (int i = 0; i < 8; i++)
        {
            long x = 0L;

            for (int a = i + 1, b = j + 1; a < 7 && b < 7; a++, b++)
                x |= bit(a, b);

            for (int a = i + 1, b = j - 1; a < 7 && b > 0; a++, b--)
                x |= bit(a, b);

            for (int a = i - 1, b = j + 1; a > 0 && b < 7; a--, b++)
                x |= bit(a, b);

            for (int a = i - 1, b = j - 1; a > 0 && b > 0; a--, b--)
                x |= bit(a, b);

            masks[i + j * 8] = x;
        }
    }

    return masks;
}

答案 2 :(得分:2)

一次声明多个变量时,不应重复数据类型。

int a = i + 1, b = j + 1