对象信息与对象索引数组不一致

问题描述

我正在尝试使函数infoEst()遍历对象数组 并打印出对象的名称和位置。迭代很好,但似乎每个 数组中的索引与最后一个条目完全相同。

错误地创建了对象数组吗?

import java.util.Scanner;

public class Estudiante {
   static String nombre= "",promedio = "",pueblo = "",enTrada = "";
   static int edad;
   static Estudiante[] objArray = new Estudiante[4];
   static Scanner input = new Scanner(system.in);
 
   Estudiante(String nom,int ed,String prom,String pueb) {
      this.nombre = nom;
      this.edad = ed;
      this.promedio = prom; 
      this.pueblo = pueb;
   }

   static void infoEst(String n) {
      for (int i = 0; i < objArray.length; i++) {
         if (objArray[i].nombre == n) {
            System.out.println(objArray[i].nombre + "," + objArray[i].pueblo);
         }
      }
   }   

   public static void main(String[] args) {
      objArray[0] = new Estudiante("Joshua",20,"A","Aguadilla");
      objArray[1] = new Estudiante("Liliana",21,"Isabella");
      objArray[2] = new Estudiante("Cano",27,"C","Aguadilla");
      objArray[3] = new Estudiante("Eribelto",22,"F","Moca");
 
      
      // does not print anything when executed.    
      infoEst("Joshua"); 
      infoEst("Liliana");
      
      // the if statement block executes on index 0 so
      // it prints Eribelto,Moca 4 times.
      infoEst("Eribelto");
    
      // All of these print "Eribelto" which is last in the array
      System.out.println(objArray[0].nombre);
      System.out.println(objArray[1].nombre);
      System.out.println(objArray[2].nombre);
      System.out.println(objArray[3].nombre);   
   }
}

    


解决方法

可以很好地进行迭代,但似乎数组中的每个索引都与最后一个条目完全相同。

static String nombre= "",promedio = "",pueblo = "",entrada = "";

不要使用静态变量。这意味着该类的每个实例共享相同的信息。