所以,我有三大类:
我需要在输入学生的ID,加上考试类的考试为TreeSet的与考试类型,这一切学生类中。
这样做之后,我需要打印该TreeSet中有一个Iterator ..但我得到的是一些奇怪的: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;
}
}
更换
System.out.println(es);
至
System.out.println(es.next());
编辑:更好地更换整个打印()方法
public void print() {
System.out.println("ID: " + ID);
System.out.println("\nExams done: ");
for (Exam exam : exams) {
System.out.println(exam);
}
}
因为你不需要自己来实现迭代,对,在每一个Java循环对于这种情况。
编辑:用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());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句