Java 显示包含组成员的组名

Java 显示包含组成员的组名,java,arrays,class,methods,Java,Arrays,Class,Methods,我试图解决Java类中的一个赋值问题。我陷入困境,需要一些帮助。 我正在尝试在我的组类中创建一个方法,该方法将显示组名和组中的4名学生。我的代码当前显示组名和我的学生在数组中的内存位置 public class Group { /**-------Declaring attributes----*/ String groupName; int newStudentCount; /**----------------------------*/ /**--------Constructor--

我试图解决Java类中的一个赋值问题。我陷入困境,需要一些帮助。 我正在尝试在我的组类中创建一个方法,该方法将显示组名和组中的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];
}
}

在我的应用程序类中,我有:

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个名称,而不是它们的内存位置。非常感谢您的帮助。

我可以从您的问题中推断出几件事

首先,您只返回
对象中
学生
数组索引0处的学生。如果要返回所有学生,则方法签名的返回类型应为
Student[]
,而不是
Student
对象

如果按照上面的提示操作,则必须遍历返回的数组以打印每个学生对象

无论您选择哪种实现,打印内存引用而不是字符串对象的原因是您没有在学生类中重写
toString

类似的内容将在传递到
系统时打印学生数据。out
调用:

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

通过实现toString(),您可以按照AndrewLeach所说的去做。或 要打印所有学生姓名,您的方法应类似于:

public String getStudent(){

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

  return studentNames;
}

知道你的学生类看起来像什么会很有帮助。记住,我不需要它。我添加了它,很抱歉刚刚编辑了我的帖子。请看下面我的答案。我将索引设置为0以测试代码,并查看它将返回什么。当我按照你的第一个建议使用返回学生[];我出错了,因为你需要返回学生数组。只需将您的返回更改为
return students
而不是
return students[0]
这是我得到的错误:错误:(30,16)java:不兼容类型:Student[]无法转换为Student这是因为您需要实际处理Student[]的返回类型并将其分配给Student[]的声明,然后反复打印出每个学生。