有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从数组中获取空输出

我试图打印一个填充了一些对象的数组,结果得到了一个空输出

数组在我的主类中用于范围需求

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

  1. # 1 楼答案

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

    这不会让你的班级成员adicionnombre是该构造函数的局部。如果要设置对象的成员,需要使用this

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

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

  2. # 2 楼答案

    正如@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关于设置你的班级成员的回答

  3. # 3 楼答案

    首先,在构造函数中初始化静态成员没有任何意义。而是使用静态初始值设定项对其进行初始化,因为这对于类的所有实例都很常见

    static {  
         nombre = "Potion";
    }