问题描述
我正在尝试使函数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 = "";
不要使用静态变量。这意味着该类的每个实例共享相同的信息。