当前位置: 首页 > 知识库问答 >
问题:

考试树集

易研
2023-03-14

你好,我有这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级考试,我已经盖章了,打印名称和考试结果相同

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;
    }
}

共有1个答案

蒙勇
2023-03-14

将该行替换为如下所示的esami。

private List<Esame> esami = new List<Esame>();

如果它是这样工作的,那么问题在于重写Esami类的hashCode()equals()方法的方式。由于此TreeSet将所有插入内容作为同一元素进行树处理,并且作为一个集合,它只能包含同一元素的一个实例。

请记住,hashCode()equals()必须一起重写;)

 类似资料:
  • 考生入口 考生打开易考网站首页(https://eztest.org)可点击右上角我是考生查看相关介绍,设备浏览器兼容情况和下载eztest客户端。 考试流程 第一步:登录 考生打开考试链接后,在登录界面输入准考证号登录即可。(注:在登录时段内才可以登录) 可即报即考的考试,考生可点击立即注册进入考试: 若考试未到登录时间,则登录框会处于灰色禁止填写状态。下方显示距离开考还有多久的倒计时: 第二步

  • 当删除具有两个子节点的节点时,如果指示使用标准的二叉搜索树节点删除算法,我们应该将其替换为右子树的最小节点还是左子树的最大节点?

  • 考试安排 如何创建考试? 点击新建考试,易考会提供一个向导来帮助您完成考试设置。 第一步:填写考试基本信息 第二步:选择该场考试所需试卷 第三步:设置需要考生填写的个人信息 第四步:设置所需考场配置即可完成创建; 注: 对于已创建的考试,依然可以随时更改以上所有设置。但要注意不要影响已经参加考试的考生。 详细创建考试步骤 查看 如何设定和更改考试登录时段? 考试登录时段是指允许考生登录考试的起止时

  • 试卷结构 [ { "type":"multiple_choice", // 题目类型 "multi_select": 0, // 是否多选 "name":"选择题", // 题目名称 "must":1, // 1为必填; 0为选填 "score_method":

  • 试卷编辑 1.创建试卷,此时会自动进入默认单元的编辑; 注:若需要普通单元可编辑完善该单元;若不需要可在试卷结构页删除该单元: 2.添加速录单元 如上图,试卷结构页左下角“新建单元”选择新建速录单元: 3.编辑速录单元 添加速录单元后,点击“编辑试题”即可进入速录单元的编辑: 试题编辑展示如下: 看打题编辑操作: 听打题编辑操作(相较看打题多了上传音频): 若开启结果查看区考生可查看如下: 创建考

  • 易考有哪些考试配置? 1.即报即考:考生可以自主报名参加考试 2.限定登录位置:限制考生登录考试的来源IP地址 3.练习模式:考生每作答一题即可查看该题的答案和解析。 4.考试承诺书:考生登录后承诺遵承诺书内容,方可进入考试。 5.视频监控(增值服务):实时监控考生考试,并随即抓拍考生照片。可选择开启视频录制、声音监控、登录比对人脸、考中人脸侦测。 6.鹰眼监控(运营项目专用):使用非当前答题的手