import java.util.Scanner;
import java.util.ArrayList;
import java.io.File;
class Ordliste {
ArrayList<String> list = new ArrayList<String>();
public void lesBok(String filnavn) throws Exception {
File fil = new File(filnavn);
Scanner s = new Scanner(fil);
while(s.hasNextLine()){
leggTilOrd(s.nextLine());
}
}
private void leggTilOrd(String ord){
Ord w = new Ord(ord);
if (list.contains(w)) {
w.oekAntall();
}
else {
list.add(w);
}
}
}
class Ord {
private String tekst;
private int verdi = hentAntall();
public Ord(String tekst){
this.tekst = tekst;
this.verdi = verdi;
} //Konstruktoer
public String toString(){
return tekst;
}
public int hentAntall(){
return verdi;
}
public void oekAntall(){
verdi++;
}
}
我基本上尝试做的是从txt.file中读取单词。该代码应该只保存每个单词一次,并在每次重复时添加“verdi”1。
我做错了什么? “ordliste”和“ord”是两个不同的java文件。我希望你能理解我一直想做的事情,即使是挪威语。
答案 0 :(得分:1)
代码&#34; list.contains(w)&#34;方法leggTilOrd不合适;
你不是在重复单词,而是重复Ord对象。
所以如果你想对重复单词收费,你的对象Ord应该覆盖equals方法:
class Ord{
@Override
public boolean equals(Object obj) {
Ord o = (Ord)obj;
return tekst.equals(o.tekst);
}
private String tekst;
private int verdi = hentAntall();
public Ord(String tekst) {
this.tekst = tekst;
this.verdi = verdi;
} // Konstruktoer
public String toString() {
return tekst;
}
public int hentAntall() {
return verdi;
}
public void oekAntall() {
verdi++;
}
}