这里是java初学者!
我想要一个对象模型,它是随机坐标列表,并且根据(*),当主运行模型(200)时,ArrayList不为空。但是当我运行 main 时,当我使用 (**) 周围的打印输出进行测试时,出现越界错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
是构造函数模型有问题吗?
public class Model extends ArrayList<Particle>{
private ArrayList<Particle> particleList;
public Model(int N) {
ArrayList<Particle> list1 = new ArrayList<Particle>();
Particle newParticle = new Particle();
for(int i=0;i<N;++i){
list1.add(newParticle);
newParticle = new Particle();
//String s= String.valueOf(newParticle.x);
//System.out.println(s);
}
this.particleList = list1;
Particle p1 = particleList.get(5);
double d = p1.x;
String s = String.valueOf(d);
System.out.println(s); (*)
}
public static void main(String[] args){
Model x1 = new Model(200);
Particle p1 = x1.get(0); (**)
double d = p1.x;
String s = String.valueOf(d);
System.out.println(s);
}
最佳答案
您混淆了 Model 实际上是的数组,因为它是从 ArrayList 扩展而来的,而您的 Model 包含的 ArrayList 则是它的扩展。
如果您希望您的模型是 ArrayList,则不需要该 molecularList 属性。你可以这样做:
public class Model extends ArrayList<Particle> {
public Model(int N) {
for (int i = 0; i < N; i++) {
Particle newParticle = new Particle();
this.add(newParticle);
}
}
}
public static void main(String[] args){
Model x1 = new Model(200);
Particle p1 = x1.get(0); (**)
double d = p1.x;
String s = String.valueOf(d);
System.out.println(s);
}
关于java - 构造函数返回意外的 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42005416/