【发布时间】:2021-12-25 22:26:29
【问题描述】:
实验课
import java.math.BigInteger;
import java.util.Scanner;
public class Lab {
public static void main(String[] args) {
Studente s;
inserimento();
}
public static void inserimento() {
Studente s = null;
do {
try {
//inserimento matricola
System.out.println("\nmatricola:");
Scanner mat = new Scanner(System.in);
String matrstring = mat.nextLine();
if (matrstring.equals("")) {
break;
}
int matricola = Integer.parseInt(matrstring);
//inserimento cognome
System.out.println("\ncognome:");
Scanner cog = new Scanner(System.in);
String cognome = cog.next();
//inserimento nome
System.out.println("\nnome:");
Scanner nom = new Scanner(System.in);
String nome = nom.next();
//caricamento studente
s = new Studente(matricola, cognome, nome);
//caricamento studenti nell'hashset
s.addStudenteSet(s);
} catch (Exception e) {
System.out.println("Dati inseriti sbagliati");
}
} while (true);
System.out.println("fine inserimento");
s.print();
}
}
在这门课中,我输入学生代码、姓氏和姓名,然后将它们放入 Studente 课中。
import java.util.*;
public class Studente {
private int matricola;
private String cognome;
private String nome;
private Set<Studente> studenti = new HashSet<Studente>();
public Studente(int matricola, String cognome, String nome) {
this.matricola=matricola;
this.cognome=cognome;
this.nome=nome;
}
public void addStudenteSet(Studente s){
this.studenti.add(s);
}
@Override
public boolean equals(Object o){
Studente st = (Studente) o;
if(this.matricola==st.matricola){
return true;
}else return false;
}
@Override
public int hashCode(){
return Integer.hashCode(matricola);
}
public void print(){
Iterator<Studente> i = this.studenti.iterator();
while(i.hasNext()){
Studente student = i.next();
System.out.println("matricola: " + student.matricola + "\ncognome: " +student.cognome+ "\nnome: " +student.nome);
}
}
}
在这里,我使用了一个 hashset 和打印方法,我想打印我带进实验室课的每个学生,但它只打印最后一个。我该如何解决这个问题?在 Lab 类中,我调用了 addStudenteSet(s) 方法;
【问题讨论】:
-
为什么是三个
Scanner对象?样本输入是什么? -
因为我要取学生姓名的代码
-
一个
Scanner对象应该足以读取来自System.in的所有输入。尝试移除其他两个并仅使用一个对象。 -
从 Java 1.5 开始,建议使用
for(Studente s : yourSet)代替迭代器进行迭代 -
我认为迭代器不是问题
标签: java class oop iterator hashset