Java <identifier>ожидаемая ошибка? - PullRequest
0 голосов
/ 01 июля 2011

Я получаю 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 ]

8 голосов
/ 01 июля 2011

Вы не можете объявить несколько переменных в инициализаторе цикла 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++)

Однако это означает, что переменные должны быть одного типа, конечно.

Для получения дополнительной информации см. Раздел 14.14.1 в спецификации языка .

5 голосов
/ 01 июля 2011

Удалить 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 голосов
/ 01 июля 2011

При объявлении нескольких переменных одновременно не следует повторять тип данных.

int a = i + 1, b = j + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...