Реализация 2 классов Java - PullRequest
0 голосов
/ 22 мая 2018

Я изучаю Java и пытаюсь реализовать два Java-класса.

  • Студент: firstName, lastName, departmentIn, yearGraduation, массив UAClass, которым этот студент являетсяtake, массив целых чисел, соответствующих оценкам, полученным за эти классы
  • UAClass: teacherFirstName, teacherLastName, semesterOffered, numCredits

в классе Student, реализовать метод, который рассчитывает средний балл.В методе main() ученика, инициируйте один объект ученика и распечатайте ее средний балл.

В моем классе 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', но я не могу заставить его работать.


Я изменил код, как предложил Амит.Когда я запускаю его, я получаю эту ошибку.

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]

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Прежде всего, ваш UAClass имеет один конструктор, который принимает String teacherF, String teacherL, String semesterO, String numC в качестве параметров.

Итак, вам нужно вызвать этот конструктор так:

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

Во-вторых, вы используете тип String [].Это тип массива низкого уровня.Вы можете сделать это в Java, но обычно люди предпочитают использовать тип List, а не необработанный тип, но лучше, например, List<String>.Список на самом деле является интерфейсом, но вы можете ссылаться на него, так как класс 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());
0 голосов
/ 22 мая 2018

Когда вы так измените свой код, он будет работать, но я не мог понять, что вы пытаетесь сделать в своем коде.

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());
...