从数组获取空输出

时间:2019-07-16 13:38:53

标签: java

我正在尝试打印一个填充有一些对象的数组,并且得到的输出为空。

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

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类的

变量是nombreadicion


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 个答案:

答案 0 :(得分:3)

public Objetos (String nombre, int adicion){
    adicion = adicion;
    nombre = nombre;
}

这不会设置您的班级成员。 adicionnombre在该构造函数中是本地的。如果希望它设置对象的成员,则需要使用this

public Objetos (String nombre, int adicion){
    this.adicion = adicion;
    this.nombre = nombre;
}

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

答案 1 :(得分:0)

正如@Stultuske所说,您需要objetos_inv.get(index)来获取特定的对象,并且还需要使用class属性来获取要打印的确切值。

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

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关于设置班级成员的答案。

答案 2 :(得分:0)

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

static {  
     nombre = "Potion";
}