SlimShadys:
私は三つのクラスを持っているので。
- ラボ
- 学生
- 試験
私は、入力中に学生のIDを取るに試験クラスの試験を追加する必要がありTreeSetの Studentクラス内で、試験タイプでこれのすべてを。
それをやった後、私はイテレータとTreeSetのを印刷する必要があります..しかし、私が得たすべては、いくつかの奇妙です:java.util.TreeMap$KeyIterator@1b6d3586
代わりに。
私はイテレータを作成し、TreeSetのを渡されたが、コードは動作しません。
ファイルをここに。
Lab.java
public class Lab {
public static void main(String[] args) {
Student stu = new Student();
Student.insert();
System.out.println("Insert ended.\n");
stu.print();
System.out.println("\nEnd of the program.");
}
}
Student.java
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Student implements Comparable<Student>{
private static int ID;
private static Set<Exam> exams = new TreeSet<Exam>();
public static void insert() {
Scanner input = new Scanner(System.in);
Scanner input1 = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
Scanner input3 = new Scanner(System.in);
int exam_code = 1;
String exam_name;
int exam_grade;
System.out.println("Student's ID: ");
ID = input.nextInt();
System.out.println("--- EXAMS INSERT ---");
while (exam_code != 0) {
System.out.println("Exam's code: ");
exam_code = input1.nextInt();
if (exam_code == 0) {
break;
}
else {
System.out.println("Exam's name: ");
exam_name = input2.nextLine();
System.out.println("Exam's grade: ");
exam_grade = input3.nextInt();
exams.add(new Exam(exam_code, exam_name, exam_grade));
}
}
input.close();
input1.close();
input2.close();
input3.close();
}
public void print() {
System.out.println("ID: " + ID);
System.out.println("\nExams done: ");
Iterator<Exam> es = exams.iterator();
boolean hasnext = false;
while (hasnext != true) {
if (es.hasNext()) {
System.out.println(es);
hasnext = true;
}
else {
hasnext = false;
}
}
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return 0;
}
}
Exam.java
public class Exam implements Comparable<Exam>{
public int exam_code;
private String exam_name;
private int exam_grade;
public Exam(int code, String name, int grade) {
exam_code = code;
exam_name = name;
exam_grade = grade;
}
@Override
public int compareTo(Exam o) {
// TODO Auto-generated method stub
return 0;
}
}
Egorザイツェフ:
置き換えます
System.out.println(es);
に
System.out.println(es.next());
EDIT:ベターに全印刷()メソッドを置き換えます
public void print() {
System.out.println("ID: " + ID);
System.out.println("\nExams done: ");
for (Exam exam : exams) {
System.out.println(exam);
}
}
自分で反復を実装する必要はありませんので、ために、各そのような場合のためのJavaのループがあります。
EDIT:Iteratorを使います
public void print() {
System.out.println("ID: " + ID);
System.out.println("\nExams done: ");
Iterator<Exam> es = exams.iterator();
while (es.hasNext()) {
System.out.println(es.next());
}
}