【问题标题】:Implementing 2 Java Classes实现 2 个 Java 类
【发布时间】:2018-10-31 18:03:25
【问题描述】:

我正在学习java并尝试实现两个java类。

  • 学生:firstNamelastNamedepartmentInyearGraduation,该学生正在学习的 UAClass 数组,对应于这些课程获得的成绩的整数数组
  • UA类:teacherFirstNameteacherLastNamesemesterOfferednumCredits

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

在我的 student.java 类中,我有:

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 类中,我有:

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[4]; 的一行也有问题,应该是 UAClass cy1 = new UAClass('X', 'Y', 'Z', 'L');
  • 应该是UAClass [] cy1 = new UAClass[4];
  • 尽管您确实提供了一些错误详细信息,但它与您的原始问题并不真正相关。我不知道真正的问题是你试图解决的只是你做了改变并导致了新问题。 idownvotedbecau.se/itsnotworking
  • @D.B.我的问题是我想在 UAClass 中创建一个数组,其中包含一个简短的类列表(即 501、507A 等),然后将这些类输出到 Student 中。

标签: java arrays class variable-assignment


【解决方案1】:

首先,您的 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 类返回 List 类的实现。

然后你应该使用:

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

然后您返回数组的克隆。我认为您这样做是因为您不希望更改数组。我只会返回一个带有值的连接字符串。这是一个带有流的好例子。

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

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

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

【讨论】:

  • 感谢斯文的帮助。我假设在进行流式传输之后,我会在 Student 内部使用“get”来显示课程列表?
  • 我添加了如何从 UAClass-class 中获取类列表。
【解决方案2】:

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

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 中创建一个类数组并将其输出到 Student 中。我希望这能解决问题。
猜你喜欢
  • 2017-12-20
  • 2012-10-03
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 2012-03-09
相关资源
最近更新 更多