班级档案
public class Student {
public String stu_FName;
public String stu_LName;
public String stu_ID;
}
这是我为了获取用户输入而编写的代码 公共课主要{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter value for X");
int x = sc.nextInt();
ArrayList<Student> stuIDArray = new ArrayList<Student>(4);
while (x != 0) {
Student st = new Student();
System.out.println("Enter First Name");
st.stu_FName = sc.next();
stuIDArray.add(st);
System.out.println("Enter value fo1r X");
x = sc.nextInt();
}
当我使用上面的代码存储值后打印数组的大小时,大小正常,
System.out.println(stuIDArray.size());
但是当我尝试使用以下任何一种方法打印出结果时,它会打印一些代码类型格式
for (int i=0;i<stuIDArray.size();i++){
System.out.println(stuIDArray.get(i));
}
for (Student a : stuIDArray){
System.out.println(a);
}
输出
com.company.Student@45ee12a7
com.company.Student@330bedb4
com.company.Student@45ee12a7
com.company.Student@330bedb4
答案 0 :(得分:1)
这种情况会发生,因为当您尝试打印学生“对象”时,它会打印学生对象的字符串表示形式。 你需要做的是覆盖Student类中的toString方法,使用适当的属性,比如
@Override
public String toString() {
return "Student [stu_FName=" + stu_FName + ", stu_LName=" + stu_LName
+ ", stu_ID=" + stu_ID + "]";
}
答案 1 :(得分:1)
您必须了解toString()
方法。当您尝试在对象上使用System.out.println()
时,会调用其toString()
方法,以及您获得的签名,例如com.company.Student@330bedb4
是这些方法的默认返回值,如here所述。如果您想要了解每个字段的正确详细信息,请覆盖toString
课程中的Student
方法。有关更多信息,请查看this answer
答案 2 :(得分:1)
您需要指定获取数据所需的变量名称。下面的代码工作正常。
for (int i = 0; i < stuIDArray.size(); i++) {
System.out.println(stuIDArray.get(i).stu_FName);
}
for (Class1 a : stuIDArray) {
System.out.println(a.stu_FName);
}