出于某种原因,真假被认为是“不兼容的类型”。我只想通过布尔方法运行它吗?这有什么不对。
for(int i = 0; i < array.length ; i++)
{
int val = (array[i] % 2);
if(val == 0)
array[i] = true;
else
array[i] = false;
}
答案 0 :(得分:6)
好array
可能是int[]
,因为您正在使用array[i] % 2
并将结果分配给int
。
没有从boolean
转换为int
,因此您无法将结果存储回int[]
数组中。目前还不清楚你要做什么,但这就是为什么它没有编译。
<强>除了强>
如果你有一个相同大小的单独boolean[]
,那就行了 - 尽管它更简单地写成:
boolean[] even = new boolean[array.length];
for (int i = 0; i < array.length; i++) {
even[i] = (array[i] % 2) == 0;
}
任何时候你发现自己:
if (someCondition) {
doSomething(true);
} else {
doSomething(false);
}
你应该考虑将其重构为:
doSomething(someCondition);
答案 1 :(得分:1)
您的数组包含错误的类型:
int[] a = {1, 2, 4};
boolean[] b = {true, false};
b[0] = 1; //error
a[0] = 1; //ok