Java <identifier>预期错误?

fun*_*ptr -1 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;
}
Run Code Online (Sandbox Code Playgroud)

我发现它没有任何问题!

Jon*_*eet 8

你不能在for-loop初始化器中声明多个变量,如下所示:

for (int a = i + 1, int b = j + 1; a < 7 && b < 7; a++, b++)
Run Code Online (Sandbox Code Playgroud)

但是,你可以这样做(注意int之前删除b):

for (int a = i + 1, b = j + 1; a < 7 && b < 7; a++, b++)
Run Code Online (Sandbox Code Playgroud)

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

有关更多信息,请参阅Java语言规范部分14.14.1.


Mat*_*all 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;
}
Run Code Online (Sandbox Code Playgroud)