我有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;
}
}
答案 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**)'
定义,因此这应该是必要的。