我正在尝试添加多个站点(一个站点具有变量(“Station stop”和 int numberLiters”到具有此循环的路线及其各自的操作系统升数。
private int askStation( ) {
Station po=null;
int id;
consola.println("Id Station?");
id = consola.readInt();
po=station.getStation(id);
if( (po==null)){
consola.println("Unknown Station" );
consola.readLine();
return 0;
}
consola.print( "How many litters ");
int nLiters = consola.readInt();
if (po.checksLiters(nLiters)==false)
consola.println("Invalid Quantity");
else {
//ADD STOP TO THE ROUTE
Stop s=new Stop(po,nLiters);
Route r=new Route(1);
r.addStop(s);
consola.println(r.toString());
}
consola.readLine();
consola.clear();
}
这个循环进行了 x 次,但它只填充了 arrayList 一次,我制作了 consola.println(i.toString());
和一个 for 循环来打印里面的数据数组,无论我运行这个脚本多少次,它只会添加我输入的最后一个。这是我的类(class)路线:
public class Route {
private int start;
private arrayList<Stop>stops=new arrayList <Stop>();
public Route(int start) {
this.start = start;
}
public void addStop( Stop s ){
stops.add(s);
}
public ArrayList <Stop> getStops(){
return stops;
}
我做错了什么?是add方法吗?或者在askStation方法循环中初始化对象?
最佳答案
Stop s=new Stop(po,nLiters);
Route r=new Route(1);
r.addStop(s);
您每次都会创建一条新路线,然后向新路线添加一个停靠点,因此您会丢失旧的停靠点。为了避免这种情况,请将 Route 设置为方法外部的字段,而不是执行
Route r = new Route();
另外,
arrayList<Stop>
应该是
ArrayList<Stop>
关于JAVA 无法向 arrayList 添加多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747609/