无法将主类的字符串值设置为setter

use*_*873 0 java arrays

public class StudentTest{

  public static void main(String args[]){

    UnderGrad uG1 = new UnderGrad();
    uG1.setName("John");
    uG1.setMatric("0192345");

    System.out.println("Undergarduate Student Info");
    uG1.setCourse(new Course("CS1103",3));
    uG1.setCourse(new Course("IT4504",3));
    uG1.displayStudentInfo();

    System.out.println(" ");

    PostGrad pG1 = new PostGrad();
    pG1.setName("Sam");
    pG1.setMatric("G015466");
    pG1.setResearch("Empirical Software Engineering");
    pG1.setResearch("Data Mining");
    System.out.println("Postgrad Student Info");
    pG1.displayStudentInfo();
  }
}

public class Course{
  private String courseName;
  private int crhour;

  public Course(String n, int c){
    courseName = n;
    crhour = c;
  }

  public void setCourseName(String course){
    courseName = course;
  }

  public String getCourseName(){
    return courseName;
  }

  public void setCreditH(int c){
    crhour = c;
  }
}

public class Student{

  private String matric ="-matric required-";
  private String name="-name required-";

  public Student(){
  }

    public void setName(String n){
      if (n.matches("[a-zA-Z]+") == false)
        System.out.println("Invalid Name");
      else
        name = n;
    }
    public String getName(){
    return name;}


  public void setMatric(String m){
    matric = m;}
  public String getMatric(){
    return matric;}
}

      public class UnderGrad extends Student{
    private Course courseList[];
    private int index = 0;

    public UnderGrad(){
      Course courseList[] =new Course[7];}

  public void setCourse(Course courseName){
    //Course courseList[]= new Course[2];
    }

  public Course[] getCourse(){
  return courseList;}

  public void displayStudentInfo(){

    System.out.println("Name: "+getName());
    System.out.println("Matric: "+getMatric());
    System.out.println("Course List: "+getCourse());
      }}

  public class PostGrad extends Student{
    private String researchArea[];
    private int index = 0;

    public PostGrad()
 {
 researchArea = new String[5];
 }

  public void setResearch(String research){
      for(index=0;index<2;index++){
        researchArea[index]=research;}
    }

  public String[] getResearch(){
  return researchArea;}

  public void displayStudentInfo(){

    System.out.println("Name: "+getName());
    System.out.println("Matric: "+getMatric());
    System.out.println("Research List: "+getResearch());
      }}
Run Code Online (Sandbox Code Playgroud)

输出:

Undergarduate学生信息

姓名:约翰

Matric:0192345

课程列表:null

研究生学生信息

姓名:山姆

母校:G015466

课程表:[Ljava.lang.String; @ 2ac9fefa

问题我不能得到课程的字符串的价值和研究.我该怎么办?我应该使用超级参考吗?

Hov*_*els 6

这里:

System.out.println("Course List: "+getCourse());
Run Code Online (Sandbox Code Playgroud)

您正在打印出toString()String数组返回的默认值.不要那样做.遍历数组并打印每个项目或使用java.util.Arrays.toString(...).

System.out.println("Course List: "+ java.util.Arrays.toString(getCourse()));
Run Code Online (Sandbox Code Playgroud)

您还需要为您的课程类提供一个有效的toString()方法,一个返回courseName和可能的学分.此外,我会将课程字段更改为课程或课程列表,以反映它不代表一门课程,而是一系列课程.同样,getter方法应该反映字段名称的更改.