ArrayList- größten String printen

marmaennchen

Mitglied
Hallo,
ich möchte aus einer ArrayList den String ausgeben, der die meisten Buchstaben hat.
Code:
package level07.lesson06.task0201;

import java.util.*;

/* The longest string
1. Create an ArrayList of the strings.
2. Read 5 strings from the keyboard and add them into ArrayList
3. Using for-each cycle find the maximum lenght of all strings in this ArrayList
4. Print out all the strings that have maximum length
*/
public class Solution {
    public static void main(String[] args) throws Exception {
        System.out.println("Enter five strings!");

        Scanner scan = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < 5; i++) {

            String s = scan.nextLine();
            list.add(s);
        }
for (int i =0; i<5;i++){
            System.out.println(list.get(i).length());

            scan.close();
        }
        // TODO: implement here
    }
}
ich kriege es hin, dass der Code mir ausgibt, wieviele Stellen die Strings haben.
Was ich nicht hinbekomme, dass mir das Programm den längsten String hinschreibt.

Ich habe es schon mit Math.max probiert, aber mir wird im Endeffekt nur ausgegeben, wie die höchste Anzahl an Stellen im größten String ist.

Für jeden Ansatz bin ich sehr dankbar. Bin noch ein wenig neu auf dem Gebiet und krieg es einfach nicht hin :/

MfG marmaennchen
 

JCODA

Top Contributor
vielleicht solltest du dir vor der zweiten for-Schleife eine String-Variable anlegen und diese immer auf den längsten String zuweisen. Hierfür benötigst du wohl eine If-Anweisung mit passender Bedingung.
 

marmaennchen

Mitglied
Ich habe jetzt probiert eine If-Anweisung zu geben, in der der maximale String herausgegeben wird:
Code:
String t = list.get(0);
        if (t == Collections.max(list)) {
            for (int i = 0; i < 5; i++) {

                System.out.println(list.get(t)); //Fehlermeldung!
            }
          
        }

allerdings bekomme ich jetzt eine Fehlermeldung:
The method get(int) in the type ArrayList<String> is not applicable for the arguments (String).

Warum? Schließlich ist t als String definiert und nicht als int
 
Zuletzt bearbeitet:

JCODA

Top Contributor
Ja,... vielleicht möchtest du lieber in jedem Schleifendurchlauf die Länge von t mit der Länge des aktuellen Element in der Liste vergleichen.
 

JCODA

Top Contributor
genau. und innerhalb der if, weißt du nun das aktuelle Listenelement dem t zu.
d.h. t speichert immer den bisher längsten String.
Dann könntest du nochmal über die Liste iterieren und alle Strings mit der Länge von t ausgeben.
 

marmaennchen

Mitglied
Wie macht man das? Sobald ich schreibe, dass t = i oder t = list.get(i).length() ist, sagt er, dass man Strings nicht mit int vergleichen kann (was ja auch Sinn macht).
 

marmaennchen

Mitglied
Code:
        int i;
       
        for (i = 0; i < 5; i++) {
            String t = list.get(i);
            if (t.length() <= list.get(i).length()) {

                System.out.println();
            }
           
        }

und was kommt bei System.out.println() hin?
wenn man t oder list.get(i)eingibt, printet er einfach alle Stringsnochmal.
Bbei der Eingabe t.length() oder list.get(i).length() die Anzahl an Ziffern.
 

marmaennchen

Mitglied
Code:
String t;
        for (int i = 0; i < 5; i++) {

            if (t.length() <= list.get(i).length()) {
                String t = list.get(i); //Fehlermeldung: Duplicate local variable t

                for (String s : list) {
                    if (s.length() == t.length()) {
                        System.out.println(s);

                    }
                }
            }
so ich habe versucht, dass umzusetzen, was du gesagt hast, also zumindestens bin ich mir ziemlich sicher, dass ich alles so umgesetzt habe wie du es meintest.
Wie gesagt, ich bin ein Anfänger, nicht böse sein, dass ich das nicht so schnell begreife.
Aber auch jetzt schonmal danke, dass du dir bisher die Zeit genommen hast.
 

JCODA

Top Contributor
So etwa:
Java:
        String longestString = list.get(0);
        for (String s : list) {
            if (longestString.length() <= s.length()) {
                longestString = s;               
            }
       }
       for (String s : list) {
            if (longestString.length() == s.length()) {
                 System.out.println(s);
            }
       }
Klappt das?
 

marmaennchen

Mitglied
Code:
package level07.lesson06.task0201;

import java.util.*;

import level06.lesson11.bonus01.Max;

/* The longest string
1. Create an ArrayList of the strings.
2. Read 5 strings from the keyboard and add them into ArrayList
3. Using for-each cycle find the maximum lenght of all strings in this ArrayList
4. Print out all the strings that have maximum length
*/
public class Solution {
    public static void main(String[] args) throws Exception {
        System.out.println("Enter five strings!");

        Scanner scan = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < 5; i++) {

            String s = scan.nextLine();
            list.add(s);

        }
        String t = list.get(0);
        for (String s : list) {

            if (t.length() <= s.length()) {

            }
        }
        for (String s : list) {
            if (t.length() == s.length()) {
                System.out.println(s);

            }
            scan.close();
        }
    }

}
// TODO: implement here

Ja, man muss nur die Zeile longestString = s; entfernen
Danke
 

JCODA

Top Contributor
Du hast nicht wirklich verstanden, wie die Logik funktioniert oder?
Natürlich musst du die Zuweisung da lassen, sonst wird t ja garnichtmehr verändert.
Ich hab t in meinem Code nur longestString genannt, weil man eigentlich sprechende Variablennamen verwenden sollte.
 

marmaennchen

Mitglied
Hm, es macht im Endeffekt keinen Unterschied, beide male gibt er mir den längsten String aus
und wofür der zweite Teil gut ist, verstehe ich nicht so ganz, es geht auch ohne.
Code:
}
        String t = list.get(0);
        for (String s : list) {

            if (t.length() <= s.length()) {
            System.out.println(s);
}
}
 
Zuletzt bearbeitet:

JCODA

Top Contributor
Wenn ich deinen Code ausführe erhalte ich:
Code:
Enter five strings!
a
aa
b
bb
c
a
b
c

Wenn der längste String nicht der erste ist, klappt dein Code ohne die Zeile nicht.
 

marmaennchen

Mitglied
Stimmt, du hast Recht. Mein Fehler. Dementsprechend kann man auch nicht einfach die letzte Hälfte von dem Code weglassen. Hatte in dem Moment noch nicht ganz nachvollzogen wofür der gut ist.
 

JStein52

Top Contributor
Und ich will ja nicht an deinem Code rummeckern und er funktioniert ja auch. Aber man hätte sich nur die Länge des längsten Strings merken müssen, nicht den String selber.
 

JCODA

Top Contributor
Und ich will ja nicht an deinem Code rummeckern und er funktioniert ja auch. Aber man hätte sich nur die Länge des längsten Strings merken müssen, nicht den String selber.
Das stimmt, aber da am Anfang nur von "dem" größten die Rede war, wollte ich die "Idee" nicht nochmal verändern, denn sonst wäre das wieder verwirrend gewesen.
(Offtopic: Ändert auch nichts an der benötigten Speichermenge, da wir ja nur eine Referenz speichern...)
 
X

Xyz1

Gast
Ganz besonders inperformant ist ja auch:
Java:
        ArrayList<String> list = new ArrayList<String>();
        list.add("Das ");
        list.add("ist ");
        list.add("ein ");
        list.add("Liste ");
        list.add("mit ");
        list.add("Strings.");
        for (int i = 0; i < 100000; i++) {
            Random r = new Random();
            list.add(r.nextInt(list.size()), list.get(r.nextInt(list.size())));
        }
        list.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                for (int i = 0; true; i++) {
                    try {
                        o1.charAt(i);
                    } catch (StringIndexOutOfBoundsException sioobe1) {
                        try {
                            o2.charAt(i);
                        } catch (StringIndexOutOfBoundsException sioobe2) {
                            return 0;
                        }
                        return +1;
                    }
                    try {
                        o2.charAt(i);
                    } catch (StringIndexOutOfBoundsException sioobe3) {
                        return -1;
                    }
                }
            }
        });
        System.out.println(list.get(0));
        System.out.println("list = " + list);

Sind nicht wirklich viele Strings, aber dauert bei mir schon 6 seconds alleine.

Daran lernst du, zu proggen, und, wie man es performancetechnisch nicht machen sollte. Und den Compilerbauern freuts das Herz. :D
 
X

Xyz1

Gast
Nein wurde sie nicht. Auf so was kam kein Mensch ;);)

Aber das Prinzip sollte klar sein, zuerst befülle ich "zufällig", dann bestimme ich die Länge eines Strings, indem ich von Anfang bis Ende laufe, dann sortiere ich, und dann wähle ich das 1. Elem., das nur das längste sein kann.

:rolleyes:

So lernt man Proggen, erst ein paar Umwege machen. Leider gibt's in Java keine ineffizienten Sortierverfahren standardmäßig. :D Sonst wäre doch so etwas auch noch schön: https://de.wikipedia.org/wiki/Slowsort , um die CPU zu quälen. :D
 
X

Xyz1

Gast
Wenn ihr wollt, können wir jetzt ja über Laufzeitoptimierungen sprechen, welche evtl. vorgenommen werden...
 

tommysenf

Top Contributor
Java:
import java.util.*;

/* The longest string
1. Create an ArrayList of the strings.
2. Read 5 strings from the keyboard and add them into ArrayList
3. Using for-each cycle find the maximum lenght of all strings in this ArrayList
4. Print out all the strings that have maximum length
*/
public class Solution {
    public static void main(String[] args) {

        List<String> list = new ArrayList<String>();
  
        System.out.println("Enter five strings!");
        try(Scanner scan = new Scanner(System.in)) {
            for (int i = 0; i < 5; i++) {
                list.add(scan.nextLine());
            }
        }
      
        int maxLength = Integer.MIN_VALUE;
        for (String s : list) {
            maxLength = Math.max(s.length(),maxLength);
        }

        for (String s : list) {
            if (maxLength == s.length()) {
                System.out.println(s);
            }
        }
    }

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J arraylist Index des größten, zweit-,dritt-,...-größten Elemtens ausgeben Java Basics - Anfänger-Themen 8
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
F java.util.ArrayList Java Basics - Anfänger-Themen 3
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Arraylist zu einem Array bringen mit Verschachtelung Java Basics - Anfänger-Themen 11
N Methode mit einer Arraylist Java Basics - Anfänger-Themen 106
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
H ArrayList Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
K Zahlenfolge ArrayList Java Basics - Anfänger-Themen 3
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
F Array in ArrayList ablegen Java Basics - Anfänger-Themen 3
V ArrayList Java Basics - Anfänger-Themen 1
Z Runden Arraylist Java Basics - Anfänger-Themen 9
X Frage zur einer ArrayList in einer ArrayList Java Basics - Anfänger-Themen 5
F Arraylist als Pfadausgabe Java Basics - Anfänger-Themen 10
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
M Problem mit ArrayList Java Basics - Anfänger-Themen 32
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
X Problem mit Arraylist in Arraylist Java Basics - Anfänger-Themen 2
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
M UML-Klassendiagramm ArrayList Java Basics - Anfänger-Themen 1
O ArrayList oberflächig durchsuchen Java Basics - Anfänger-Themen 3
I "\n" aus ArrayList enfernen, aber wie?! Java Basics - Anfänger-Themen 4
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben