【问题标题】:java for loop does not update variablejava for循环不更新变量
【发布时间】:2016-10-09 05:15:38
【问题描述】:
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 了,所以非常感谢您的帮助。

【问题讨论】:

  • StackOverflow 的人!附上解释会使反对票更具建设性。
  • (cars.length==listSize -1) 可能会解决您的问题。
  • @aa_oo 不会 cars.length 总是等于 80,如果声明为 cars = new Car[80]
  • 是的,但 listSize 将比 cars.length AT MAX 小一

标签: java algorithm for-loop


【解决方案1】:

由于0 &lt;= 0,即使listSize==0(即使cars[0] 未定义),for 循环也会迭代一次。

所以如果printReport“什么都不做”(包括抛出异常),最可能的原因是if语句中的表达式计算为false

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      删除这一行:

      if (cars.length==listSize)
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-28
        • 2017-08-05
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多