【发布时间】:2021-12-20 03:22:58
【问题描述】:
您好,我有这 3 个课程: 这里我放了一个学生的名字和他参加的考试
package traccia50719;
import java.util.*;
public class Lab {
public static void main(String[] args) {
Studente studente = inserimento();
System.out.println("fine inserimento\n");
studente.print();
System.out.println("\nfine programma");
}
private static Studente inserimento() {
Studente s = null;
Esame esame=null;
System.out.println("\nmatricola:");
Scanner mat = new Scanner(System.in);
int matricola= mat.nextInt();
System.out.println("\ncognome:");
Scanner cog = new Scanner(System.in);
String cognome= cog.next();
System.out.println("\nNome:");
Scanner nom = new Scanner(System.in);
String nome= nom.next();
s= new Studente(matricola, cognome, nome);
do{
System.out.println("\ncodice esame:");
Scanner cod = new Scanner(System.in);
int codicesame= cod.nextInt();
if(codicesame==0){
break;
}
System.out.println("\nNome esame:");
Scanner nomes = new Scanner(System.in);
String nomesame= nomes.next();
System.out.println("\nvoto esame:");
Scanner vot = new Scanner(System.in);
int votoesame= vot.nextInt();
esame = new Esame(codicesame,nomesame,votoesame);
s.addEsame(esame);
}while(true);
return s;
}
}
在这堂课中,我有学生使用构造函数,但是当我尝试使用迭代器打印考试时,我只打印了一个考试。为什么?
package traccia50719;
import java.util.*;
public class Studente {
private int matricola;
private String cognome;
private String nome;
private Set<Esame> esami = new TreeSet<Esame>();
public Studente(int matricola, String cognome, String nome){
this.matricola=matricola;
this.cognome=cognome;
this.nome=nome;
}
public void addEsame(Esame e){
this.esami.add(e);
}
public void print(){
System.out.println("\nmatricola:" + this.matricola);
System.out.println("\ncognome:" + this.cognome);
System.out.println("\nnome:" + this.nome);
Iterator<Esame> i = this.esami.iterator();
while(i.hasNext()){
Esame e = (Esame) i.next();
e.stampaesame();
}
}
}
这是 3 级考试,我有 stampaEsame() 打印姓名和考试结果
package traccia50719;
public class Esame implements Comparable{
private int codice;
private String nome;
private int voto;
public Esame(int codice, String nome, int voto){
this.codice=codice;
this.nome=nome;
this.voto=voto;
}
public void stampaesame(){
System.out.println("\n nome esame:" +this.nome);
System.out.println("\n voto esame:" +this.voto);
}
public boolean equals(Object o) {
Esame esa = (Esame) o;
if(this.codice==esa.codice){
return true;
}else return false;
}
public int compareTo(Object arg0) {
// TODO Auto-generated method stub
return 0;
}
}
【问题讨论】:
-
拥有
compareTo总是return 0不是一个好主意,因为它意味着所有对象都是平等的。不同的Esame有不同的codice吗? -
这能回答你的问题吗? TreeSet only adding one value?
标签: java class object set treeset