我正在尝试打印一个填充有一些对象的数组,并且得到的输出为空。
该数组在我的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
类的变量是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]
答案 0 :(得分:3)
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;
}
请了解如何使用调试器。您可以在代码运行时逐行浏览代码,并查看所有值和对象以查看发生了什么。
答案 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";
}