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)
我发现它没有任何问题!
你不能在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.
删除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)
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |