这是我的代码:
for (Article a : articles) {
boxNumber = magazine.getFfd().searchArticleInBox(a);
if (boxNumber >= 3) {
text = text + "Place box " + boxNumber + "\n";
}
}
textArea.append(text);
它确实有效:
Place box 3
Place box 3
Place box 3
Place box 3
Place box 4
Place box 4
这不是我想要的。我希望有人可以告诉我,当数字改变时我只能得到它一次,所以我得到:
Place box 3
Place box 4
答案 0 :(得分:3)
保留最后一个值并检查它:
int last = 0;
for (Artikel a : artikelen) {
doosnummer = magazijn.getFfd().zoekArtikelInDoos(a);
if (doosnummer >= 3) {
if (last != doosnummer) {
last = doosnummer;
text = text + "Plaats doos " + doosnummer + "\n";
}
}
}
textArea.append(text);
请注意,将String
附加到单个StringBuilder
对象而不是使用String
并置会更高效,这会不断创建新的String
个对象:< / p>
StringBuilder text = new StringBuilder();
int last = 0;
for (Artikel a : artikelen) {
doosnummer = magazijn.getFfd().zoekArtikelInDoos(a);
if (doosnummer >= 3) {
if (last != doosnummer) {
last = doosnummer;
text.append("Plaats doos ");
text.append(doosnummer);
text.append("\n");
}
}
}
textArea.append(text.toString());
答案 1 :(得分:2)
您必须记住旧号码,只有在更改时才打印:
int oldDoosnummer =0;
for (Artikel a : artikelen){
doosnummer = magazijn.getFfd().zoekArtikelInDoos(a);
if (doosnummer >= 3 && doosnummer != oldDoosnummer){
text = text + "Plaats doos " + doosnummer + "\n";
oldDoosnummer = doosnummer;
}
} textArea.append(text);
答案 2 :(得分:1)
试试这个:
ArrayList<Integer> oldOccurrenceArrayList = new ArrayList<>();
for (Artikel a : artikelen) {
doosnummer = magazijn.getFfd().zoekArtikelInDoos(a);
if (doosnummer >= 3 && !oldOccurrenceArrayList.contains(doosnummer))
{
text = text + "Plaats doos " + doosnummer + "\n";
oldOccurrenceArrayList.add(doosnummer);
}
}
textArea.append(text);
您使用已传递的所有值创建ArrayList
。这样你就不会得到任何双重值。
答案 3 :(得分:0)
试试这个
for (Artikel a : artikelen) {
doosnummer = magazijn.getFfd().zoekArtikelInDoos(a);
String check = "Plaats doos " + doosnummer;
if (doosnummer >= 3 && text.contains(check)==false) {
text = text + check + "\n";
}
}
textArea.append(text);