Ich habe zwei Klassen; Kurse und Kurse. Eines der Felder in der Student-Klasse ist ein Kurs. Wenn ich dieses Programm ausführe, kann ich kein Kursobjekt im deklarierten Array halten. Der folgende Code wird mehr Licht geben, wo die Dinge scheitern:Halten eines Objekts in ein Array
package school;
public class Course
{
private String courseName;
private String courseGrade;
int counter;
public Course()
{
courseName="";
courseGrade="";
counter = 0;
}
public Course (String name,String grade)
{
courseName=name;
courseGrade=grade;
counter=0;
}
public String getCourseName()
{
return courseName;
}
public String getCourseGrade()
{
return courseGrade;
}
public void setCourse(String name,String grade)
{
courseName=name;
courseGrade=grade;
counter++;
}
@Override
public String toString()
{
return String.format("%-10s %-10s", courseName,courseGrade);
}
}
package school;
public class Student
{
private String firstName;
private String lastName;
private int counter;
private Course [] myCourse;
public Student()
{
firstName="";
lastName="";
myCourse =new Course[2];
for (int i=0;i<2;i++)
{
myCourse [i]= new Course();
}
counter= 0;
}
public Student(String first,String last)
{
firstName=first;
lastName=last;
myCourse =new Course[2];
for (int i=0;i<2;i++)
{
myCourse [i]= new Course();
}
counter= 0;
}
public Student(String first,String last, Course [] newCourse)
{
firstName=first;
lastName=last;
myCourse= new Course [2];
for (int i=0;i<2;i++)
{
myCourse [i]= new Course();
}
counter++;
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public int getNumberOfCourses()
{
return counter;
}
public void setStudent(String first,String last, Course [] newCourse)
{
firstName=first;
lastName=last;
myCourse= new Course [2];
for (int i=0;i<2;i++)
{
myCourse [i]= newCourse[i];
}
counter++;
}
public void setStudent(String first,String last)
{
firstName=first;
lastName=last;
}
public void registerCourses(Course newCourse)
{
for (int i=0;i<2;i++)
{
myCourse[i]=newCourse;
}
counter++;
}
public String toString()
{
String getString;
getString =(firstName+" "+lastName);
for(int i=0;i<2;i++)
{
getString=getString+String.format("%n %-10s",myCourse[i]);
}
return getString;
}
}
package school;
import java.util.*;
public class Test
{
static Scanner cin= new Scanner(System.in);
public static void main(String[] args)
{
String first,last,name,grade;
Student [] myStudent= new Student [2];
Course [] myCourse= new Course [2];
for (int i=0;i<2;i++)
{
myStudent[i] = new Student();
System.out.println("enter name:");
first=cin.next();
System.out.println("Last Name:");
last=cin.next();
// For loop within a for loop
for (int j=0;j<2;j++)
{
myCourse [j]= new Course();
System.out.println("Course Name:");
name=cin.next();
System.out.println("Course Grade:");
grade=cin.next();
myCourse [j] = new Course(name,grade);
myStudent[i].registerCourses(myCourse [j]);
}
myStudent [i]=new Student(first, last, myCourse);
}
for (int i=0;i<2;i++)
{
System.out.println(myStudent[i]);
}
}
}
das Problem in den zweiten for-Schleife, das natürlich Objekt halten nicht in der Lage ist, dass ich es will. Ich möchte das Programm zur Ausgabe von etwas ähnliches auf die folgenden:
Student One
MAT A
PHY B
BIO C
CHE A
LAN A+
HIS A
Student Two
COM C
Statistics A+
COM C
Mathematics D
Geography A
Biology C+
Student Three
Biology C
Mathematics D
LAN A+
COM B
Physics B
Physics B
jedoch, dass die Ausgabe zu erhalten, ich bin nicht in der Lage. Tatsächlich bekomme ich folgende Ausgabe:
enter name:
Student
Last Name:
One
Course Name:
MAT
Course Grade:
A
Course Name:
COM
Course Grade:
C
enter name:
Student
Last Name:
Two
Course Name:
STA
Course Grade:
A
Course Name:
ENG
Course Grade:
B
Student One
Student Two
Ihren Code zu beurteilen, haben Sie 'OOP' nicht ganz verstanden. Es gibt so viele 'neue Kurse()', gefolgt von einem sofortigen 'neuen Kurs (Name, Note)'. Und das für jede Instanz jedes Objekts. – SomeJavaGuy
Eine nicht verwandte Abfrage: sollte nicht die 'Student'- und' Course'-Klasse entweder 'super();' oder 'this();' in den Konstruktormethoden verwenden? – px06
Warum verwenden Sie Arrays anstelle von 'Set'? –