【发布时间】:2011-07-13 22:34:21
【问题描述】:
我有一个函数,它接受一个整数数组和一个布尔数组。如果 Integer 数组中的值为最大值且布尔数组为 true,则将 trackerArray 中的值设置为 true。这是我的代码的简化版本,它会产生错误...
package com.thisis.a.test;
public class ThisIsATest {
public static void main(String[] args){
Integer[] integerArray = new Integer[]{75,200,75,200,75};
boolean[] booleanArray = new boolean[]{false,true,false,true,false};
boolean[] trackerArray = new boolean[]{false,false,false,false,false};
Integer iHighestSum = 0;
for(int c = 0; c < booleanArray.length; c++){
if(booleanArray[c] == true)
if(integerArray[c] > iHighestSum)
iHighestSum = integerArray[c];
}
for(int c = 0; c < booleanArray.length; c++){
if(booleanArray[c] == true)
if(integerArray[c] == iHighestSum)
trackerArray[c] = true; // this if statement should be called twice
}
// trackerArray should be {false,true,false,true,false}
// instead it is {false,true,false,false,false}
}
}
trackerArray 应该是 {false,true,false,true,false},而不是 {false,true,false,false,false}。 if 语句应该被触发两次,但它只被触发一次。这是为什么呢?
【问题讨论】:
标签: java