【发布时间】:2014-01-30 11:53:06
【问题描述】:
给定以下代码
package parkinglottest;
public class ParkingLotTest {
public static void main(String[] args) {
ParkingLot p=new ParkingLot(15);
System.out.println(p.getMax());
Car c1=new Car(1);
Car c2=new Car(2);
p.addCar(c1);//at parkinglottest.ParkingLotTest.main(ParkingLotTest.java:14)
p.addCar(c2);
}
}
package parkinglottest;
public class ParkingLot {
private int max;
public ParkingLot(int max)
{
this.max=max;
}
private Car[] cars=new Car[max];//if instead of "max" i put any other positive integer, it works just fine.
int nr=0;
public void addCar(Car c)
{
cars[nr++]=c; //at parkinglottest.ParkingLot.addCar(ParkingLot.java:17)
}
public int getMax(){
return max;
}
}
我得到一个 ArrayIndexOutOfBoundsException。
【问题讨论】:
-
问题是什么?
-
仅仅因为你的初始化遵循代码中的构造函数并不意味着这是执行顺序。
-
只需检查 logcat 并发布错误是什么
-
我不明白为什么在声明这样的数组时会出现 outOfBoundsException:private Car[] cars=new Car[max];
-
但如果我这样声明:private Car[] cars=new Car[10];整个程序运行良好
标签: java arrays indexoutofboundsexception