【问题标题】:Displaying Group Name with Group Members与组成员一起显示组名称
【发布时间】:2015-12-06 00:59:06
【问题描述】:

我正在尝试解决我的 Java 类中的一项作业。我被困住了,需要一点帮助。 我正在尝试在我的 Group 类中创建一个方法,该方法将显示组名和组中的 4 名学生。我的代码当前显示我的学生在我的数组中的组名和内存位置。

public class Group {
/**-------Declaring attributes----*/
String groupName;
int newStudentCount;

/**----------------------------*/

/**--------Constructor------------*/
public Group(String givenGroupName) {
    groupName = givenGroupName;
}

Student[] students = new Student[4];

/**----------------------------*/

/**--------Method------------*/
void addStudent(Student st) {
    students[newStudentCount] = st;
    ++newStudentCount;
    System.out.println("New student: " +st.getName());
 }
 public String getGroup() {
   return "Group = " + groupName;
}
public Student getStudent(){
    return students[0];
}

}

在我的 App 类中,我有这个:

public class App {
public static void main(String[] args) {
    Group g1 = new Group("Pink Pony Princesses");
    Student st1 = new Student("Joshua Mathews");
    st1.getName();
    g1.addStudent(st1);

    Student st2 = new Student("Jame Brooks");
    g1.addStudent(st2);

    Student st3 = new Student("Mike Myers");
    g1.addStudent(st3);

    Student st4 = new Student("Christie Richie");
    g1.addStudent(st4);

    System.out.println(g1.getGroup()+ " " + g1.getStudent());

}

这是我的学生课:

public class Student {
/**-------Declaring attributes----*/
String name;
String degree;
int age;


/**----------------------------*/

/**--------Constructor------------*/
Student(String givenName){
    name = givenName;
}
Student(String givenName,  String givenDegree, int givenAge) {
    name = givenName;
    degree = givenDegree;
    age = givenAge;

}


/**--------- METHODS --------*/
//Array
public final String [] activities = {
        "Working on Homework", "Playing a Game", "Taking a Nap"
};

String getInfo(){
    return name + age + degree;
}
String getName() {
    return name;
}
int getAge(){
    return age;
}
String getDegree() {
    return degree;
}

String whatsUp(){
    Random rand = new Random();
    int randomIndex = rand.nextInt(activities.length);
    String returnActivity = activities[randomIndex];
    return returnActivity;
}

我不确定如何调用我的数组来显示 4 个名称,而不是它们的内存位置。任何帮助将不胜感激。

【问题讨论】:

  • 了解您的学生班级是什么样子会很有帮助
  • 没关系,我不用它
  • 我添加了它,抱歉只需要编辑我的帖子。
  • 在下面查看我的答案。

标签: java arrays class methods


【解决方案1】:

我可以从你的问题中推断出一些事情。

首先,您只返回 Student 数组的索引 0 处的学生,该数组包含在您的 Group 对象中。如果你想返回所有学生,你的方法签名应该有一个 Student[] 作为返回类型,而不是一个 Student 对象。

如果您按照上述提示操作,则必须遍历返回的数组以打印每个 Student 对象。

无论您选择哪种实现,打印出内存引用而不是 String 对象的原因是您没有在 Student 类中覆盖 toString

当传递给System.out 调用时,这样的东西会打印出学生数据:

@Override
public String toString() {
    return someStudentData;
}

【讨论】:

  • 我将索引设置为 0 以测试代码并查看它会返回什么。当我遵循您第一个使用 return Student[] 的建议时;我遇到了错误。
  • 因为您需要实际返回学生数组。只需将您的退货更改为 return students 而不是 return students[0]
  • 这是我得到的错误:Error:(30, 16) java: incompatible types: Student[] cannot be convert to Student
  • 那是因为你需要实际处理 Student[] 的返回类型并将其分配给 Student[] 的声明,然后迭代打印出每个学生。
【解决方案2】:

你可以通过实现 toString() 来实现 andrewdleach 所说的。要么 要打印所有学生姓名,您的方法应类似于:

public String getStudent(){

  String studentNames = "";
  for(Student stu: students){
    studentNames+= stu.getName() + ",";
  }

  return studentNames;
}

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多