java for循环不更新变量

时间:2016-10-09 05:15:39

标签: java algorithm for-loop

public CarDealerShip() {
    cars = new Car[80];
    listSize=0;
}
public void addNewCar (String model, int year, int price, String color) {
    m = model;
    y = year;
    p = price;
    c = color;
    cars [listSize] = new NewCar (m,y,p,c);
    listSize++;
}
public void addUsedCar (String model, int year, int price, boolean rusty) {
    m = model;
    y = year;
    p = price;
    r = rusty;
    cars [listSize] = new UsedCar(m,y,p,r);
    listSize++;
}
public String printReport() {
    String list="";
    if (cars.length==listSize)
        for (int i =0; i <= listSize; i++)
            list+=cars[i].toString()+"\n";
    return list;
}

在方法printReport中,for循环假设更新变量列表但根本不执行任何操作。已经有一段时间了,因为我再次使用Java,所以任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

当您创建CarDealerShip类的对象时,变量listSize的值为0,而'cars'数组的长度为80个元素。 所以基本上这个IF失败了: if(cars.length == listSize)。 因此,永远不会输入for循环。 这就是您提供的代码中可以说的全部内容。

答案 1 :(得分:0)

0 <= 0起,即使for(即使未定义listSize==0),cars[0]循环也会迭代一次。

所以如果printReport&#34;什么都不做&#34; (包括抛出异常),最可能的原因是if语句中的表达式求值为false

如果您在尝试拨打cars时未向printReport添加80辆汽车,则可能会发生这种情况。

答案 2 :(得分:0)

删除此行:

if (cars.length==listSize)

因为cars是一个长度为80的数组,并且变量listSize在创建此类时的值为0。所以for循环没有被执行。