Java : Die letzten Zahlen/Werte aus einer Arraylist ausgeben?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

fz234 
Fragesteller
 25.02.2018, 16:02

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 );

0
tavkomann  25.02.2018, 16:35
@fz234

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);
0
fz234 
Fragesteller
 25.02.2018, 20:28
@tavkomann

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!

0
tavkomann  25.02.2018, 20:37
@fz234

Ja, du musst nur die Schleifenbedingung anpassen:

for (int i = zahlenkette.size() - anzahlZahlen;
        i < zahlenkette.size(); ++i) {
1

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

Woher ich das weiß:Berufserfahrung – Software-Entwicklung
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) );