Java ArrayList设置有2个元素

时间:2017-03-14 17:00:02

标签: java arraylist

我有3节课。 Main,Leerling,Klas。 我的问题:我应该在Klas.class中添加什么才能将变量“cijfer”添加到我的ArrayList中?因此,当我打印k.toString时,它将显示变量naam和cijfer。

Main.class:

public class Main{   
    public static void main(String[] arg) {     
        Klas k = new Klas("V1Z");     
        Leerling l = new Leerling("Hans");     
        k.voegLeerlingToe(l);     
        l = new Leerling("Jan");     
        k.voegLeerlingToe(l);     
        l = new Leerling("Wim");     
        k.voegLeerlingToe(l);     
        System.out.println(k);     
        k.wijzigCijfer("Hans", 7.6);     
        k.wijzigCijfer("Klaas", 7.6);     
        System.out.println(k.toString());     
        System.out.println("Aantal leerlingen: " + k.aantalLeerlingen());     
    } 
} 

Klas.class:     import java.util.ArrayList;

public class Klas {
    private String klasCode;
    private ArrayList<Leerling> leerlingen;

    public Klas(String kC){
        klasCode = kC;
        leerlingen = new ArrayList<Leerling>(); 
    }

    public void voegLeerlingToe(Leerling nweLeerling){
        leerlingen.add(nweLeerling);
    }

    public void wijzigCijfer(String nm, Double nweCijfer){
        // What should I put here??
    }

    public ArrayList<Leerling> getLeerlingen(){
        return leerlingen;
    }

    public Integer aantalLeerlingen(){
        return leerlingen.size();
    }

    public String toString(){
        String s = "In klas " + klasCode + " zitten de volgende leerlingen:";
        String p = "";
        System.out.println(s);

        for (Leerling l : leerlingen) {
            System.out.println(l);
        }
        return p;
    }

}

Leerling.class:

import java.util.ArrayList;


public class Leerling {
    private String naam;
    private Double cijfer;

    public Leerling(String nwNm){
        naam = nwNm;
    }

    public String getNaam(){
        return naam;
    }

    public Double getCijfer(){
        return cijfer;
    }

    public void setCijfer(Double c){
        cijfer = c;
    }

    public String toString(){
        if (cijfer == null){
            cijfer = 0.0;
        }
        String s = naam + " heeft cijfer: " + cijfer;
        return s;
    }

}

3 个答案:

答案 0 :(得分:1)

public void wijzigCijfer(String nm, Double nweCijfer){
    // Assuming that you want to find by nm, as shown in your demo
    for (Leerling l : leerlingen) {
        if (l.getNaam().equals(nm)) { // or use equalsIgnoreCase
            l.setCijfer(nweCijfer);
        }
    }
}

请注意,由于列表未排序,您必须回退到线性搜索,这不是最佳选择。但它应该适用于这个练习:)

答案 1 :(得分:0)

你需要这样的东西:

public void wijzigCijfer(String nm, Double nweCijfer){
    Leerling l = new Leerling(nm);
    l. setCijfer(nweCijfer);
    leerlingen.add(l);
}

如果您不需要,可以删除此方法public void voegLeerlingToe

答案 2 :(得分:0)

  

当我打印k.toString时,它会显示变量naam   cijfer。

您可以替换

 for (Leerling l : leerlingen) {
     System.out.println(l.toString());
 }

Leerling

由于Overriden类已经具有toString()方法的duration.c:(.text+0x62): undefined reference to `avformat_open_input(AVFormatContext**, char const*, AVInputFormat*, AVDictionary**)' 定义,因此这应该是必要的。