这个代码没有编译的错误是什么?

Don*_*ter 0 java loops for-loop boolean compilation

出于某种原因,真假被认为是"不兼容的类型".我只想通过布尔方法运行它吗?它出什么问题了.

for(int i = 0; i < array.length ; i++)
{
int val = (array[i] % 2);
if(val == 0)
array[i] = true;
else
array[i] = false;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

好吧array可能是一个int[],因为你正在使用array[i] % 2并将结果分配给int.

有没有转换,从booleanint,所以你不能将结果保存回的int[]阵列.目前还不清楚你要做什么,但这就是为什么它没有编译.


在旁边

如果你有一个boolean[]相同大小的单独的,那就行了 - 虽然它更简单地写成:

boolean[] even = new boolean[array.length];
for (int i = 0; i < array.length; i++) {
    even[i] = (array[i] % 2) == 0;
}
Run Code Online (Sandbox Code Playgroud)

任何时候你发现自己:

if (someCondition) {
    doSomething(true);
} else {
    doSomething(false);
}
Run Code Online (Sandbox Code Playgroud)

你应该考虑将它重构为:

doSomething(someCondition);
Run Code Online (Sandbox Code Playgroud)