Printf语句产生的输出不包括我通过扫描仪输入的数据

时间:2018-06-03 05:14:33

标签: java arrays

一旦我在先前的声明中输入我的数据到数组i然后尝试获取此数据并打印,但我得到一个随机的数据输出,您可以在附加图像中看到。

我的代码如下:

private void listStudent()
{
    {       
System.out.printf("%s %-7s %14s %10s","ID","First Name","Last Name","Age\n");
for (int i= 0; i<count; ++i)
 {
 System.out.println(arr[i]);   
}
System.out.println();
Scanner scanner = new Scanner(System.in);
scanner.nextLine();


public class Student {
private String fname;
private final String lname;
double age;
private final String id;
int count;

这是我在student.java文件中的代码

Student(String id, String fname, String lname, double age, int count) 
{
   this.id = id;
   this.fname = fname;
   this.lname = lname;
   this.age = age;
   this.count = count;
}

This is what the output of the code i get is.

1 个答案:

答案 0 :(得分:1)

我相信您要问的问题与以下输出有关: 学生@ 55f96302。 这是因为行

System.out.println(arr[i]);   

据我所知,您正在尝试打印Student对象信息,但Java不能以这种方式工作 - 如果您只打印一个数组项(这是一个对象),它将打印出 Classname @hash < /强>

为了打印真实的学生数据,您的Student课程还应该包含值的getter。所以学生班看起来像:

public class Student {

    private String id;
    private String fname;
    private String lname;
    private double age;
    private int count;

    Student(String id, String fname, String lname, double age, int count) {
        this.id = id;
        this.fname = fname;
        this.lname = lname;
        this.age = age;
        this.count = count;
    }

    public String getId() {
        return id;
    }

    public String getFname() {
        return fname;
    }

    public String getLname() {
        return lname;
    }

    public double getAge() {
        return age;
    }

    public int getCount() {
        return count;
    }
}

然后在'for'循环中,您需要执行以下操作:

for (int i= 0; i<count; ++i)
 {
 System.out.println(arr[i].getId() + arr[i].getFname() + arr[i].getLname());   
}

等等。