为了账号安全,请及时绑定邮箱和手机立即绑定

从 Array 获取空输出

从 Array 获取空输出

慕姐8265434 2023-03-31 14:34:43
我正在尝试打印一个填充了一些对象的数组,但得到的是空输出。该数组在我的主类中以满足范围需求public class Main {   static ArrayList<Objetos> objetos_inv = new ArrayList<Objetos>();在另一个类中,我想在其中添加、检索和打印数组及其对象:public class ModoHistoria {static Objetos potion = new Objetos("Potion", 20);    public static void modoHistoria(){       for(int i = 0; i < 4; i++){       }    System.out.println(objetos_inv);    }我Objetos班级的变量是nombre和adicion:public class Objetos {    static String nombre;    static int adicion;    public Objetos (String nombre, int adicion){        adicion = adicion;        nombre = nombre;    }  public void setNombre (String nombre){        nombre = nombre;    }      @Override    public String toString() {    return nombre;  }    public String getNombre(){        return nombre;    }    public void setAdicion (int adicion){        adicion = adicion;    }    public int getAdicion(){        return adicion;    }}输出:[null, null]
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

public Objetos (String nombre, int adicion){

    adicion = adicion;

    nombre = nombre;

}

这不会设置您的班级成员。adicion并且nombre是该构造函数的本地。如果你想让它设置对象的成员,你需要使用this:


public Objetos (String nombre, int adicion){

    this.adicion = adicion;

    this.nombre = nombre;

}

请学习如何使用调试器。您可以在代码运行时逐行单步执行,并查看所有值和对象以了解发生了什么。


查看完整回答
反对 回复 2023-03-31
?
忽然笑

TA贡献1806条经验 获得超5个赞

您需要objetos_inv.get(index)获取特定对象,还需要使用类属性来获取要打印的确切值。


我准备了一个小演示,可以帮助您了解如何打印正确的输出。


import java.util.ArrayList;

import java.util.List;


public class HelloWorld{

    static List<Objectos> objetos_inv = new ArrayList<Objectos>();

    static Objectos potion = new Objectos("Potion", 20);

    public static void main(String []args){

        modoHistoria();    

    }


    public static void modoHistoria(){

        objetos_inv.add(potion);

        System.out.println(objetos_inv.get(0).getNombre());

        // Or you have override toString() as @RealSkeptic mentioned in his comment So you can also directly print.

        System.out.println(objetos_inv.get(0));

    }


}

class Objectos{


    private String nombre;

    private int adicion;


    public Objectos(){};

    public Objectos(String nombre, int adicion){

        this.nombre = nombre;

        this.adicion = adicion;

    }


    public void setNombre(String nombre){

        this.nombre = nombre;

    }

    public String getNombre(){

        return nombre;

    }

    @Override

    public String toString() {

        return nombre;

    }


    public void setAdicion(int adicion){

        this.adicion = adicion;

    }

    public int getAdicion(){

        return adicion;

    }

}

并且还同意@MaxVollmer 关于设置班级成员的回答。


查看完整回答
反对 回复 2023-03-31
?
跃然一笑

TA贡献1826条经验 获得超6个赞

首先,在构造函数中初始化静态成员没有任何意义。而是使用静态初始化器来初始化它,因为这对于类的所有实例都是通用的。

static {  
     nombre = "Potion";
}


查看完整回答
反对 回复 2023-03-31
  • 3 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信