Java: Array Rückwärts ausgeben;?
Ich will praktisch die Ausgabe "1.0, -1.0, -3.0" statt "-3.0, -1.0, 1.0,"
Ich habe es mit Reverse versucht, aber der Fehler ist mir erst aufgefallen, als ich es schon hatte. Eine for-Schleife hat auch nicht geklappt (könnte aber an mangelnden Kenntnissen liegen).
Kann mir einer bitte einen Tipp geben?
Hier ist mein Code. Vielen Dank!
public class WasBisherGutWar {
double[] koeffizienten;
public WasBisherGutWar(double...koeffizient) {
this.koeffizienten = koeffizient;
for (double i = koeffizient.length - 1; i >= 0; i--) {
if (this.koeffizienten[(int) i] != 0) {
}
}
}
public double[] getKoeffizient() {
return koeffizienten;
}
public void setKoeffizient(double[] koeffizient) {
this.koeffizienten = koeffizient;
}
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
for (double koeffizient: this.koeffizienten) {
if (koeffizient != 0) {
stringBuilder.append(koeffizient + ", ");
}
}
return stringBuilder.toString();
}
public static void main(String[] args) {
WasBisherGutWar p = new WasBisherGutWar(-3.0, -1.0, 0.0, 0.0, 1.0);
System.out.println(p);
}
}
1 Antwort
Du könntest beim Erzeugen des Strings die Werte rückwärts durchlaufen, indem du eine Zählschleife (for-Schleife) verwendest, wobei du beim letzten Element beginnst:
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = koeffizienten.length - 1; i >= 0; --i) {
if (koeffizienten[i] != 0) {
stringBuilder.append(koeffizienten[i] + ((i != 0) ? ", " : ""));
}
}
return stringBuilder.toString();
}
Das ist der sogenannte ternäre Operator. Das ist quasi eine Kurzform für eine if/else-Abfrage, die sich an dieser Stelle anbietet. Wenn i ungleich 0 ist (Bedingung), wird ", " angehängt, ansonsten nichts (Alternative/else).
Voll ausgeschrieben wäre das:
if (i != 0) {
stringBuilder.append(koeffizienten[i] + ", ");
} else {
stringBuilder.append(koeffizienten[i]);
}
Dies sorgt dafür, dass nach dem letzten Wert kein weiteres Komma folgt.
Aaah verstehe cool. Kann ich das auch öfter Nacheinander Verwenden?
Ja, aber das wird unübersichtlich und du musst wirklich aufpassen damit. Ich rate dazu, den ternären Operator nicht zu verschachteln. Er eignet sich perfekt, wenn man zwei Strings konkateniert. Ein Ersatz für if/else ist er aber nicht.
Er nutzt den tenären Operator.
Wenn i ungleich 0 ist, wird ein Komma verwendet, ansonsten ein leerer String. Der bietet sich in solchen Fällen sehr gut an, da er den Code verkürzt im Vergleich zu einer klassischen if Abfrage.
Wenn i ungleich 0 ist, dann wird ", " genutzt, sonst "".
Beispiel:
String s1 = null;
String s2 = null;
s1 = (i != 0) ? ", " : "";
if(i != 0) {
s2 = ", ";
} else {
s2 = "";
}
Hierbei steht am Ende dasselbe in s1 und s2, aber die erste Methode ist kürzer.
Darf ich Fragen was das hier macht?