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

时间:2013-12-09 19:42:41

标签: java loops for-loop compilation boolean

出于某种原因,真假被认为是“不兼容的类型”。我只想通过布尔方法运行它吗?这有什么不对。

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

2 个答案:

答案 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