Java: Array Rückwärts ausgeben;?

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();
}
irgendeinkerl 
Fragesteller
 18.12.2018, 20:35

Darf ich Fragen was das hier macht?

(i != 0) ? ", " : "")
0
tavkomann  18.12.2018, 20:40
@irgendeinkerl

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.

0
irgendeinkerl 
Fragesteller
 18.12.2018, 20:54
@tavkomann

Aaah verstehe cool. Kann ich das auch öfter Nacheinander Verwenden?

0
tavkomann  18.12.2018, 20:56
@irgendeinkerl

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.

1
milos2  19.12.2018, 20:28
@irgendeinkerl

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.

1
Schusswaffel  03.05.2019, 17:59
@irgendeinkerl

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.

0