实施 2 Java 类

Implementing 2 Java Classes

我正在学习 java 并尝试实现两个 java classes.

在 Student class 中,实现一个计算 GPA 的方法。在 Student 的 main() 方法中,启动一个 Student 对象并打印出她的 GPA。

在我的 student.java class 我有:

import java.util.*;

public class Student {

private String firstName;
private String lastName;
private String departmentIn;
private String yearGraduation;
private float [] grade;
private int counter = 0;
private String Student;

public Student(String my_firstName, String my_lastName, String my_deptIn, String my_yearGrad) {
firstName = my_firstName;
lastName = my_lastName;
departmentIn = my_deptIn;
yearGraduation = my_yearGrad;
grade = new float[5];                    
}

public String toString(){

    String value;
    value  = "First Name: " + firstName + "\n";
    value += "Last Name : " + lastName + "\n";
    value += "Department: " + departmentIn + "\n";
    value += "Grad. Year: " + yearGraduation + "\n";
    return value;
}


public static void main(String[] args) {
 Student my1 = new Student("Bob", "Hope", "MBA", "2018");
     Student my2 = new Student("John", "Smith", "MBA", "2020");
     Student my3 = new Student("Jane", "Doe", "MBA", "2021");

     UAClass cy1 = new UAClass[4];
     String[] secondArray = cy1.getarrayClass();


     System.out.println(my1);
     System.out.println(my2);
     System.out.println(my3);
     System.out.println(Arrays.toString(cy1));

 }
 }

在我的 UAClass.java class 我有:

import java.util.*;

public class UAClass {
private String teacherFirstName;
private String teacherLastName;
private String semesterOffered;
private String numCredits;  
private String[] arrayClass = {"MBA 501","MBA 505","MBA 513","MBA 545"};

public UAClass(String teacherF, String teacherL, String semesterO, String numC) {
    teacherFirstName = teacherF;
    teacherLastName = teacherL;
    semesterOffered = semesterO;
    numCredits = numC;
}    

public String[] getarrayClass(){
    return arrayClass.clone();
}     


}

我想做的是在“UAClass”中创建一个数组并将其打印到“Student”中,但我似乎无法让它工作。


我已经按照 Amit 的建议修改了代码。当我 运行 它时,我得到这个错误。

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: Array.getarrayClass at Homework2.Student.main(Student.java:66)

String[] secondArray = cy1.getarrayClass(); 似乎有问题;


我删除了 String[] secondArray = cy1.getarrayClass() 行,它似乎 运行 没问题,但现在我得到的只是 [null, null, null, null]

当您像那样更改代码时它会起作用,但我无法理解您要在代码中做什么。

UAClass cy1 = new UAClass("Bob", "", "", "");
String[] secondArray = cy1.getarrayClass();
System.out.println(my1);
System.out.println(my2);
System.out.println(my3);
System.out.println(cy1.getarrayClass());

首先,您的 UAClass 有一个以 String teacherF, String teacherL, String semesterO, String numC 作为参数的构造函数。

所以你需要像这样调用这个构造函数:

UAClass cy1 = new UAClass("Teacher F", "Teacher L", "Semester", "NumC");

其次,您使用了 String[] 类型。这是一种低级数组类型。您可以在 Java 中执行此操作,但通常人们更愿意使用 List 类型,而不是原始类型,但最好使用 List<String>。 List 实际上是一个接口,但是你可以引用它作为 Arrays class returns List class.

的实现

然后您应该使用:

private List<String> arrayClass = Arrays.asList("MBA 501","MBA 505","MBA 513","MBA 545");

而你 return 阵列的克隆。我认为您这样做是因为您不希望更改数组。我只想 return 一个带值的串联字符串。这是一个带有流的很好的例子。

public String getClasses() {
    return arrayClass.stream().collect(Collectors.joining(","));
}

现在在 Student class 中,您可以像这样打印 classes 的列表:

System.out.println(cy1.getClasses());