访问不同方法(同一类)上的arraylist

4uqofj5v  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(356)

我正在尝试访问“verjugadores”方法中的arraylist“lista”(在“guardar”方法中进行了修改),这可能吗?当我打印“seeplayer”方法的arraylist时,我注意到它是空的,但是,“save”方法的arraylist中有一个元素(属性在另一个类上被赋值),下面是代码:

public class Jugador extends VentanaJugador{
private int puntuacion;
String edad1, edad;
String nombre;
String nom;
ArrayList<Jugador>lista=new ArrayList<>();
Jugador hola;

    public Jugador() {
        super();
    }

    public Jugador(int puntuacion, String nombre, String edad1, ArrayList lista) {
        super();
        this.hola = new Jugador();
        this.puntuacion = puntuacion;
        this.nombre = nombre;
        this.edad1 = edad1;
        this.lista = lista;
    }

    public int getPuntuacion() {
        return puntuacion;
    }

    public void setPuntuacion(int puntuacion) {
        this.puntuacion = 0;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getEdad() {
        return edad1;
    }

    public void setEdad(String edad1) {
        this.edad1 = edad1;
    }

     @Override
public String toString() {
    return "Nombre: " + this.getNombre() + "\n" +
           "Edad: " + this.getEdad();
}

    /**
     *
     * @param nom
     * @param edad
     * @return
     */
    public ArrayList guardar(String nom, String edad){
    nombre = nom;
    edad1=edad;
    this.hola = new Jugador(puntuacion, nombre, edad1, lista);
    lista.add(hola);
        System.out.println("*******************");
        System.out.println("Nombre: "+hola.getNombre()+"\n"+
                "Edad: "+hola.getEdad()+"\n"+
                        "Puntuacion Inicial: "+hola.getPuntuacion());
        System.out.println("*******************");
    return lista;

}

    public void verJugadores(){
        System.out.println("*******************");
        System.out.println("La lista de jugadores es:"+
                "\n"+
                "*******************");
        if(lista.isEmpty()){
            System.out.println("La lista esta vacia");
        }else{
    for (int i=0;i<lista.size();i++) {
        System.out.println("Nombre: "+lista.get(i).getNombre());
        System.out.println("Edad: "+lista.get(i).getEdad());
        System.out.println("Puntuacion: "+lista.get(i).getPuntuacion());
    }
    }
    }

}
twh00eeo

twh00eeo1#

在guardar方法中,调用verjugadores方法,同时将arraylist(在本例中为lista)作为参数发送。

public ArrayList guardar(String nom, String edad){
    nombre = nom;
    edad1=edad;
    this.hola = new Jugador(puntuacion, nombre, edad1, lista);
    lista.add(hola);
        System.out.println("*******************");
        System.out.println("Nombre: "+hola.getNombre()+"\n"+
                "Edad: "+hola.getEdad()+"\n"+
                        "Puntuacion Inicial: "+hola.getPuntuacion());
        System.out.println("*******************");

    verJugadores(lista); // calling the verJugadores method. 
    return lista;

然后,相应地改变你的Verjugadors。

public void verJugadores(ArrayList<Jugador> lista){ // here parameter added.. 
        System.out.println("*******************");
        System.out.println("La lista de jugadores es:"+
                "\n"+
                "*******************");
        if(lista.isEmpty()){
            System.out.println("La lista esta vacia");
        }else{
    for (int i=0;i<lista.size();i++) {
        System.out.println("Nombre: "+lista.get(i).getNombre());
        System.out.println("Edad: "+lista.get(i).getEdad());
        System.out.println("Puntuacion: "+lista.get(i).getPuntuacion());
    }

由于arraylist是一种非原始数据类型,verjugadores方法中的参数将引用相同的lista。
我希望我能回答你的问题。。

相关问题