从 Array 获取空输出

我正在尝试打印一个填充了一些对象的数组,但得到的是空输出。


该数组在我的主类中以满足范围需求


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]


慕姐8265434
浏览 109回答 3
3回答

四季花海

public Objetos (String nombre, int adicion){&nbsp; &nbsp; adicion = adicion;&nbsp; &nbsp; nombre = nombre;}这不会设置您的班级成员。adicion并且nombre是该构造函数的本地。如果你想让它设置对象的成员,你需要使用this:public Objetos (String nombre, int adicion){&nbsp; &nbsp; this.adicion = adicion;&nbsp; &nbsp; this.nombre = nombre;}请学习如何使用调试器。您可以在代码运行时逐行单步执行,并查看所有值和对象以了解发生了什么。

忽然笑

您需要objetos_inv.get(index)获取特定对象,还需要使用类属性来获取要打印的确切值。我准备了一个小演示,可以帮助您了解如何打印正确的输出。import java.util.ArrayList;import java.util.List;public class HelloWorld{&nbsp; &nbsp; static List<Objectos> objetos_inv = new ArrayList<Objectos>();&nbsp; &nbsp; static Objectos potion = new Objectos("Potion", 20);&nbsp; &nbsp; public static void main(String []args){&nbsp; &nbsp; &nbsp; &nbsp; modoHistoria();&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; }&nbsp; &nbsp; public static void modoHistoria(){&nbsp; &nbsp; &nbsp; &nbsp; objetos_inv.add(potion);&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(objetos_inv.get(0).getNombre());&nbsp; &nbsp; &nbsp; &nbsp; // Or you have override toString() as @RealSkeptic mentioned in his comment So you can also directly print.&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(objetos_inv.get(0));&nbsp; &nbsp; }}class Objectos{&nbsp; &nbsp; private String nombre;&nbsp; &nbsp; private int adicion;&nbsp; &nbsp; public Objectos(){};&nbsp; &nbsp; public Objectos(String nombre, int adicion){&nbsp; &nbsp; &nbsp; &nbsp; this.nombre = nombre;&nbsp; &nbsp; &nbsp; &nbsp; this.adicion = adicion;&nbsp; &nbsp; }&nbsp; &nbsp; public void setNombre(String nombre){&nbsp; &nbsp; &nbsp; &nbsp; this.nombre = nombre;&nbsp; &nbsp; }&nbsp; &nbsp; public String getNombre(){&nbsp; &nbsp; &nbsp; &nbsp; return nombre;&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public String toString() {&nbsp; &nbsp; &nbsp; &nbsp; return nombre;&nbsp; &nbsp; }&nbsp; &nbsp; public void setAdicion(int adicion){&nbsp; &nbsp; &nbsp; &nbsp; this.adicion = adicion;&nbsp; &nbsp; }&nbsp; &nbsp; public int getAdicion(){&nbsp; &nbsp; &nbsp; &nbsp; return adicion;&nbsp; &nbsp; }}并且还同意@MaxVollmer 关于设置班级成员的回答。

跃然一笑

首先,在构造函数中初始化静态成员没有任何意义。而是使用静态初始化器来初始化它,因为这对于类的所有实例都是通用的。static&nbsp;{&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nombre&nbsp;=&nbsp;"Potion"; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java