私には2つのクラスがあります。コースと学生クラス。 Studentクラスのフィールドの1つがコースです。このプログラムを実行すると、宣言された配列にコースオブジェクトを保持できません。物事が失敗しているところ以下のコードは、より多くの光を与える:オブジェクトを配列に保持する
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]);
}
}
}
問題は、私はそれがしたいコースのオブジェクトを保持することができない2番目のforループです。私はその出力を得ることができませんしかし
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
: は私が出力するプログラムに次のような何かをしたいです。実際、私は次のような出力が得られます。
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
あなたのコードを判断するには、あなたは 'OOP'を完全に理解していませんでした。非常に多くの 'new Course()'が続き、 '新しいコース(名前、グレード)'が続きます。そして、各オブジェクトの各インスタンスに対して。 – SomeJavaGuy
関連性のないクエリ: 'Student'クラスと' Course'クラスはコンストラクタメソッドで 'super();'または 'this();'を使用するべきではありませんか? – px06
なぜ 'Set'の代わりに配列を使うのですか? –