【问题标题】:How to return value of an array of objects如何返回对象数组的值
【发布时间】:2014-02-13 04:45:05
【问题描述】:

我有一个问题。我正在努力做到这一点,但经过几个小时的搜索和尝试,我似乎无法让它发挥作用。这是一个任务。我只是需要指导。

我必须创建以下对象

Student(String name, double GPA)
Classroom (int maxClassSize)

教室对象初始化一个数组,我将在其中存储学生对象。

但是,Classroom() 中的数组被声明为私有(私有 Student students[]),所以我使用公共方法添加学生

public boolean add(Student aStudent)  *do not worry about the boolean type

我也可以使用 get 方法返回数组的值

public Student getStudent(int position)

这些方法在作业中设置。

我的问题是,当我尝试输出数组中的对象时(同样,这是分配所必需的)。我得到了参考,即 Student@23e45e23 而不是每个对象的名称和 GPA。

我不能使用 toString。

有什么想法吗?

【问题讨论】:

  • 你必须为Student实现一个toString方法,否则,它会给你一个默认的(内存地址)。
  • 如果您可以访问学生的属性,您可以执行 println getStudent(0).getName() + getStudent.getGPA();
  • 我问了老师,我不能使用toString,并且作业确实明确说“证明输出必须来自教室对象返回给您的main方法的对象。” (他的话)。

标签: java arrays object output


【解决方案1】:

您正在看到 Object 类的 toString() 方法的(非人类友好的)输出。

Student 类中定义一个toString() 方法,该方法将覆盖Object 类中找到的实现(Student 隐式扩展)

类似:

@Override
public String toString() {
    return firstName + " " + lastName + " - " gpa;
}

每当您打印一个对象时,都会调用toString() 方法:

System.out.println(student);

如果student不为null,这和调用的效果一样:

System.out.println(student.toString());

【讨论】:

    【解决方案2】:

    尝试覆盖 toStringMethod()

    方法一:

    class Studet{
    //
    //
    //
    public String toString(){
     return name+""+GPA;
    }
    

    方法二:

    创建类的对象

    然后使用该对象访问变量的值。

    【讨论】:

      【解决方案3】:

      我终于能够在不使用 toString(不能使用它)的情况下解决它

      (student1.getName(classroom.getStudent(0))
      

      (student1.getGPA(classroom.getStudent(0))
      

      谢谢大家!

      【讨论】:

        猜你喜欢
        • 2021-11-29
        • 2020-03-24
        • 1970-01-01
        • 1970-01-01
        • 2020-11-10
        • 1970-01-01
        • 2017-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多