存储然后打印数据到/从类和数组列表

时间:2017-04-09 04:26:58

标签: java class object arraylist

班级档案

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

3 个答案:

答案 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);
}