数组索引中的值不对应于另一个数组的索引
问题描述:
我遇到了我的代码问题,看起来这部分似乎正在导致它。数组索引中的值不对应于另一个数组的索引
public static boolean[] determine(double avgMilesFlown, double[] numMilesFlown, boolean[] bonusEligibility) {
boolean result = false;
for (double d : numMilesFlown) {
if (d > avgMilesFlown) {
result = true;
}
}
bonusEligibility = Arrays.copyOf(bonusEligibility, bonusEligibility.length + 1);
bonusEligibility[bonusEligibility.length - 1] = result;
return bonusEligibility;
}
这段代码应该确定是否有人获得奖金。如果其飞行里程数超过所有进入(包括他们自己)在内的平均飞行里程数,那么他们有资格。我的问题是,我是否将每个飞行里程数与正确飞行里程的平均值进行比较,以便如果飞行里程数大于平均值,则会返回与每个人相对应的真实列表。
普通的for循环:
for (int i = 0; i < numMilesFlown.length; i++) {
if (numMilesFlown[i] > avgMilesFlown) {
result = true;
}
}
例输入/输出:
Names: [tim, jim]
Years Flown: [2, 2]
Miles flown: [45, 43]
Avg Miles: 44
Bonus: [515.00, 515.00]
徒添应该得到奖金,因为他的飞行里数是大于平均值,但吉姆赢得一个太,甚至尽管他的飞行里程低于平均水平。
答
result
一次只能保存一个值,因此一旦它在for循环中设置为true,它将在整个方法中保持为真,并使bonusEligibility[]
中的所有内容也都设置为true。
而是直接填写bonusEligibility[]
,其对应的值为avgMilesFlown[]
。例如:
Arrays.fill(bonusEligibility, false);
for (int i = 0; i < numMilesFlown.length; i++) {
if (numMilesFlown[i] > avgMilesFlown) {
bonusEligibility[i] = true;
}
}
*我将每个单独的飞行里程数与正确飞行的平均飞行里数进行比较*? JVM说什么? – CKing
你可以在'result = true'后添加'break'语句;作为除了增强。 –
使用正常[for](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html)循环代替[enhanced for loop](https://blogs.oracle.com/) CoreJavaTechTips/entry/using_enhanced_for_loops_with) –