为什么我的Java for循环没有将变量设置在循环之外?

时间:2014-03-06 00:30:28

标签: java variables for-loop return-value

好的,所以我正在使用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,仍然返回未初始化值的错误

3 个答案:

答案 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之外,pricequantity可能返回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);
    }

执行完成后,所有值的详细信息都可用于检查和验证。