public BigDecimal calculateTotal() {
BigDecimal percent = BigDecimal.valueOf(0.9);
int i = 0;
BigDecimal price = BigDecimal.valueOf(0.0);
while(!myOrders.isEmpty()){
if (!myOrders.get(i).getItem().isBulk() && myMembership == true){
price = price.add(myOrders.get(i).calculateOrderTotal().multiply(percent));
myOrders.remove(i);
}
else{
price = price.add(myOrders.get(i).calculateOrderTotal());
myOrders.remove(i);
}
}
//WHY IS THIS UNREACHABLE?!
return price.setScale(2, RoundingMode.HALF_EVEN);
}
我知道 return 语句之后的任何内容都是无法访问的代码,但我唯一的 return 语句是无法访问的,我不明白为什么。 while 循环就是这样,因为我捕获了救命稻草,我知道它可能不会做我想做的事。 myOrders 是一个 ArrayList。
最佳答案
编辑:由于OP说它是一个ArrayList
,我的答案不再适用。
你永远不会更新你的索引i
。这应该有效:
public BigDecimal calculateTotal() {
BigDecimal percent = BigDecimal.valueOf(0.9);
int i = 0;
BigDecimal price = BigDecimal.valueOf(0.0);
while(!myOrders.isEmpty()) {
if (!myOrders.get(i).getItem().isBulk() && myMembership == true) {
price = price.add(myOrders.get(i).calculateOrderTotal().multiply(percent));
myOrders.remove(i);
} else {
price = price.add(myOrders.get(i).calculateOrderTotal());
myOrders.remove(i);
}
i++; // <-- You were missing this
}
// Not unreachable anymore :)
return price.setScale(2, RoundingMode.HALF_EVEN);
}
关于java - 我的返回单无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33183368/