好的,所以我正在使用Java,我很困惑。我的代码看起来像这样
private double computeValue(Warehouse house) {
double price;
int quant;
double value;
for (int i=0; i < house.size(); i++) {
price = house.getItem(i).getPrice();
quant = house.getItem(i).getQuantity();
value += (price*quant);
}
return value;
}
它通过仓库项目读取其大小的次数,并在何时获取仓库中的项目,其价格和数量,并将它们相乘以变为值
现在这一切都很好,花花公子,但变量值设置的数字将不会离开循环。它表示当我运行它时,值尚未初始化,如果我将其设置为某个随机虚拟数字,则返回该数字,而不是它应该从乘以价格和数量得到的数字。任何人都可以告诉我如何解决这个问题,以便变量值从循环中获取一个数字并返回它,以及理解为什么它正在做它正在做的事情会有所帮助。谢谢!
编辑:我修正了house.size()为0的问题,现在设置为10,仍然返回未初始化值的错误答案 0 :(得分:3)
可能是你的
house.size();
返回0?
你还试图获得房子里最后一项的价值吗?
如果您想获得所有商品及其价格的累计价值,您应该更改分配给的价值:
value = value + (price*quant);
否则它只会返回房子中最后一项的值。
答案 1 :(得分:1)
好的答案是找到的,我必须将double的值设置为以0.0开头而不是没有,所以现在它可以正常工作
private double computeValue(Warehouse house) {
double price;
int quant;
double value = 0.0;
for (int i=0; i < house.size(); i++) {
price = house.getItem(i).getPrice();
quant = house.getItem(i).getQuantity();
value += price*quant;
}
return value;
}
答案 2 :(得分:0)
除house.size()
值可能为0
之外,price
和quantity
可能返回getPrice()
或getQuantity()
值返回0,因此不会更改value
变量。
这很容易调试。例如,for
循环可以包含print
语句,如下所示:
for (int i=0; i < house.size(); i++) {
price = house.getItem(i).getPrice();
quant = house.getItem(i).getQuantity();
value += (price*quant);
System.out.println("\nRound #" + i + ": value = " + value + ", price = " + price + ", quant = " + quant);
}
执行完成后,所有值的详细信息都可用于检查和验证。