Java : Die letzten Zahlen/Werte aus einer Arraylist ausgeben?
Moin!
Da ich noch nicht so lange dabei bin, kenne ich noch nicht alle kniffe, kann man mein vorhaben ein bisschen vereinfachen?
Bis jetzt mache ich es noch recht kompliziert!
int letztezahl = zahlenkette.get(zahlen.size() -1);
int vorletztezahl = zahlenkette.get(zahlen.size() -2);
int vorvorletztezahl = zahlenkette.get(zahlen.size() -3);
int vorvorvorletztezahl = zahlenkette.get(zahlen.size() -4);
System.out.println(vorvorvorletztezahl + vorvorletztezahl + vorletztezahl + letztezahl );
Am liebsten wäre mir: int letztenvierzahlen = ____________________
Lieben gruß und nen sonnigen Sonntag
5 Antworten
Nutze eine Schleife:
int anzahlZahlen = 4;
for (int i = zahlenkette.size() - 1;
zahlenkette.size() - 1 - i < anzahlZahlen && i >= 0; --i) {
System.out.print(zahlenkette.get(i));
}
System.out.println();
Oder auch als Array:
int anzahlZahlen = 4;
int zahlen[] = new int[anzahlZahlen];
for (int i = zahlenkette.size() - 1;
zahlenkette.size() - 1 - i < anzahlZahlen && i >= 0; --i) {
zahlen[zahlenkette.size() - 1 - i] = zahlenkette.get(i);
}
Dies ist gerade bei großen Datenmengen praktisch, weil du dann nicht so viel Code benötigst.
Du kannst in einem Integer immer nur eine Zahl speichern. Wenn du mehrere Werte speichern möchtest, musst du ein Array aus Integern verwenden, siehe meine zweite Lösungsmöglichkeit. Alternativ kannst du auch mithilfe des StringBuilders einen String zusammensetzen:
int anzahlZahlen = 20;
StringBuilder str = new StringBuilder();
for (int i = zahlenkette.size() - 1;
zahlenkette.size() - 1 - i < anzahlZahlen && i >= 0; --i) {
str.append(zahlenkette.get(i));
}
System.out.println(str);
Mit dem Stringbuilder ist das sehr gut! Vielen dank!
Dazu noch eine Frage zur Optik!
Gibt es noch einen Befehl um die zahlen in "str" anders rum auszugeben?,
Er zeigt mir nämlich die letzte Zahl zuerst an.
Beispiel:
die letzten 4 zahlen aus:
213213213283
sind
3283
er zeigt sie mir aber so an:
3823
lg und nen guten Abend dir!
Du könntest eine Methode auslagern, die dir die n. Zahlen von hinten zurück gibt. Damit hast du dann etwas mehr Struktur im Code und es ist besser lesbar.
int letztenvierzahlen ist problematisch (Nicht nur weil du dich nicht an die CamelCase Konvention gehalten hast :)). Ein int ist ein Integer also eine Ganzzahlige Zahl. Du kannst keine 4 Zahlen in einem int speichern. Du könntest vielleicht ein Int Array machen, dass die letzten 4 Zahlen enthält.
Das allereinfachste ist wohl dieses:
int size = zahlenkette.size();
for(int i=4; i >= 1; i--){
System.out.println(zahlenkette.get(size-i));
}
Du gehst die Liste von hinten durch und gibst aus:
- zahlenkette.get(size-4);
- zahlenkette.get(size-3);
- zahlenkette.get(size-2);
- zahlenkette.get(size-1);
Das sind die letzten 4 Elemente, in einer Liste der Größe 10 wäre es:
- zahlenkette.get(6);
- zahlenkette.get(7);
- zahlenkette.get(8);
- zahlenkette.get(9);
(den Index 10 gibt es nicht, da die Zählung beim Index 0 beginnt)
In Deinem Code gibst Du übrigens die Summe der letzten vier Zahlen aus, nicht die letzten vier Zahlen selbst. Wenn das ist, was Du tun möchtest, musst Du Dir noch eine weitere Variable summe definieren, auf die Du in jedem Schleifendurchgang die entsprechende Zahl draufaddierst.
int size = zahlenkette.size(), summe = 0;
for(int i=4; i >= 1; i--){
summe += zahlenkette.get(size-i);
}
System.out.println(summe);
LG
int size=zahlen.size();
int letztevierzahlen=
zahlenkette.get(size-1)
+zahlenkette.get(size-2)
+zahlenkette.get(size-3)
+zahlenkette.get(size-4);
Viel einfacher wird's nicht gehen...
System.out.println(zahlenkette.get(zahlen.size() -1) + zahlenkette.get(zahlen.size() -2 + zahlenkette.get(zahlen.size() -3) + zahlenkette.get(zahlen.size() -4) );
Vielen dank, dazu noch eine Frage.
Ich weiß nicht ob meine Formulierung richtig ist, aber gibt es dazu noch die Möglichkeit, diese Zahlen aus der for schleife raus zu bekommen als int? oder ist das nicht Möglich?
Ich habs mir so gedacht, aber wie so oft, ist es nicht so einfach wie man denkt :P
int zwanzig = 20;
for (int i = Zahlen.size() - 1;
Zahlen.size() - 1 - i < zwanzig && i >= 0; --i) {
System.out.print(Zahlen.get(i));
int Zahlenletztenzwanzig = Zahlen.get(i);
}
System.out.println( Zahlenletztenzwanzig );