Hallo,
die Frage passt nur in den Anfänger Bereich.
Es gibt eine Liste, in der keiner, einer, mehrere oder alle Elem. 0 sein können. Daraus soll jetzt das kleinste, das aber nicht 0 ist, gewählt werden (Index).
Bisher so:
int index = -1;
for (int i = 0; i < alp.size(); i++) {
if (alp.get(i).l > 0) {
index = i;
break;
}
}
if (index == -1) {
return index;
}
for (int i = 0; i < alp.size(); i++) {
if (alp.get(i).l > 0 && alp.get(i).l < alp.get(index).l) {
index = i;
}
}
return index;
}```
Geht das irgendwie eleganter?
private static int lowest(List<Pro> alp) {
int index = -1;
int min = Integer.MAX_VALUE;
for (int i = 0; i < alp.size(); i++) {
int value = alp.get(i).l;
if (value != 0 && value < min) {
min = value;
index = i;
}
}
return index;
}
Dankeschön, das kostete mich einige Gehirnwindungen. Also Index von kleinstes l aus der Liste von Pros, das größer 0 ist, sonst -1.
Integer.MAX_VALUE wollte mir partout nicht erscheinen, weil es quasi wie 0xCAFEBABE eine magische Zahl darstellt. So ist es sogar performanter/schneller.
Damit wäre das Thema gelöst. Ihr fragt euch sicher, was l ist - oder?
*** Edit ***
Wie könnte man auch das vereinfachen:
int index = -1;
for (int i = 0; i < alp.size(); i++) {
if (alp.get(i).l > 0) {
index = i;
break;
}
}
if (index == -1) {
return index;
}
for (int i = 0; i < alp.size(); i++) {
if (alp.get(i).l > 0 && alp.get(i).p > alp.get(index).p) {
index = i;
}
}
return index;
}```
ich weiß, das sieht jetzt alles sehr ähnlich aus.
Es sind nur Teile eines Programms, damit man das gesamte nicht erkennt.
In erster Ebene wollte ich einfach nur wissen, wie man es besser schreiben kann/könnte. Diese Antwort hab ich ja auch erhalten. Das andere ist mehr so Plaudern, damit ich nicht durchdrehe.^^ (*)
(*): Das war jetzt Ironie, keine Angst/Panik, mir geht’s gut.
int index = -1;
int min = 0;
for (int i = 0; i < alp.size(); i++) {
int value = alp.get(i).l;
if (value != 0 && (index < 0 || value < min)) {
min = value;
index = i;
}
}
return index;
}