JAVA can';t在arrayList中添加多个对象

JAVA can';t在arrayList中添加多个对象,java,Java,我正在尝试添加多个站点(一个站点有变量(“Station stop”和int Numberliers”)到一个带有相应编号的循环路线 private int askStation( ) { Station po=null; int id; consola.println("Id Station?"); id = consola.readInt(); po=station.getStation(id);

我正在尝试添加多个站点(一个站点有变量(“Station stop”和int Numberliers”)到一个带有相应编号的循环路线

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循环来打印数组中的数据,无论我运行此脚本多少次,它都只添加我最后键入的一个。这是我的类路径:

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;
    }
公共类路由{
私人int启动;
private arrayListstops=new arrayList();
公共路线(int start){
this.start=start;
}
公共无效添加站点(站点s){
停止。添加(s);
}
公共阵列列表getStops(){
返回站;
}
我做错了什么?是add方法?还是askStation方法循环中对象的初始化

 Stop s=new Stop(po,nLiters);

        Route r=new Route(1);
        r.addStop(s);
您每次都创建一个新的路线,然后向新路线添加一个站点,因此您会丢失旧的站点。为了避免这种情况,请将Route设置为方法之外的字段,而不是执行此操作

Route r = new Route();
而且

arrayList<Stop> 
arrayList
应该是

ArrayList<Stop>
ArrayList
您每次都创建一个新的路线,然后向新路线添加一个站点,因此您会丢失旧的站点。为了避免这种情况,请将Route设置为方法之外的字段,而不是执行此操作

Route r = new Route();
而且

arrayList<Stop> 
arrayList
应该是

ArrayList<Stop>
ArrayList

这是指每次添加某些内容时,您都在创建一个
新路由。
添加@Andy Turner对我来说另一个重要的注意事项是,您如何知道它只添加一个
站点
,因为变量
路由r
仅存在于
else
的范围内,而此循环没有lo操作。这就是它只添加一次的原因,或者是您删除了可能很重要的代码。@KevinEsche我怀疑
consola.println(I.toString())
是一个打字错误-应该使用
r
而不是
i
@AndyTurner这是对的,但是在这段代码的哪一点上,他知道他在
列表中只有一个
路线r
不能重复使用,他也不会在其他地方使用它然后打印信息。对我来说,他不应该这样做首先检查
Route
的实例(尽管有调试器)添加@Andy Turner对我来说另一个重要的注意事项是,你怎么知道它只添加了一个
,因为变量
路线r
只存在于
其他
的范围内,而这个循环中没有循环您的代码。这可能是它只添加一次的原因,也可能是您删除了可能很重要的代码。@KevinEsche我怀疑
consola.println(I.toString())
是一个打字错误-应该使用
r
而不是
i
@AndyTurner这是对的,但是在这段代码的哪一点上,他知道他在
列表中只有一个
路线r
不能重复使用,他也不会在其他地方使用它然后打印信息。对我来说,他不应该这样做首先要检查
Route
的实例(尽管有调试器)。但要做到这一点,我必须在RouteneVerind类中有一个空构造函数,因为开始总是一样的,所以没有区别,它可以工作,非常感谢:)但要做到这一点,我必须在routeNevermind类中有一个空构造函数,因为开始总是一样的,所以没有区别,它可以工作,非常感谢:)