**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
所以我被困在这个我想完成的问题上了。
我需要做一个for循环,从数组中获取权重,如果满足一定的条件就更新它们,如果数组中的权重小于20,并且客户有一张会员卡(两者都必须为真),那么权重将减少到初始权重的95%(0.95 * weight),然后将权重相加。
不管怎样,问题是这样的,我的答案是:
在两个注解之间,执行以下操作:
- 创建一个for循环,遍历整个weights数组。
- 在for循环中,执行以下操作:
- 创建一个名为weight的float类型的局部变量,以存储特定索引处的权重值。
- 创建一个条件,检查weight是否小于20以及hasLoyaltyCard是否为真,如果为真,则将weight乘以0.95。
- 将权重添加到totalWeight变量。
float calculateWeight(float[] weights, boolean hasLoyaltyCard) {
float totalWeight = 0;
// TODO: Step 1 work goes between the two comments
float weight = 0;
for (int i = 0; i < weights.length; i++) {
weight = weights[i];
if (weight < 20.0) {
if (hasLoyaltyCard = true) {
weight = weight * 0.95f;
}
}
totalWeight = totalWeight + weight;
}
//
return totalWeight;
}
我只是不确定我哪里出错了。幸运的是,代码确实编译了。但是当运行测试用例时,它们就不正确了。我的错误在哪里?
3条答案
按热度按时间mm5n2pyu1#
1.不要将布尔值与
true
或false
进行比较;它们可以直接用在if
语句中(也可以用and(&&)操作符合并这两个if语句)。1.在循环内部加和,而不是在循环结束之后。
6ovsh4lw2#
保持totalWeight = totalWeight +重量;在如下所示的for循环中,更改if条件
vwkv1x7d3#
问题出在
if (hasLoyaltyCard = true)
部分。它应该像if (hasLoyaltyCard == true)
。当你执行=
时,它会编译,因为它理解true
到hasLoyaltyCard
的赋值变量,并且它总是为真。这意味着你的代码将在所有客户都有忠诚卡的情况下运行。改进:
if (hasLoyaltyCard)
最好读取。if (weight < 20 && hasLoyaltyCard)
一样检查所有可能的条件。