Array nach String durchsuchen und Ausgeben

wolli123

Mitglied
Ahoi,
ich habe folgende Aufgabe und weiß ehrlich gesagt nicht, wie ich das lösen soll (kam bei uns im Lernstoff noch garnicht vor, ist also so eine Art kreativ Aufgabe):
Zunächst sollte ich eine dynamische Sortierfunktion erstellen, welche 2d Arrays sortiert. Das war auch eigentlich kein Problem.
Jetzt zum Problem:
Ich brauche in dem Programm eine weitere Funktion mit dem ich im 2d Array nach bestimmten Namen suchen kann und diese mit ihren Werten (hier Kundennummer, Name, Vorname, Wohnort) ausgeben kann.

Hier mein bisheriger Code:
Java:
public class DynamischeSortierung
{ 
    public static void main (final String args[]) 
    { 
        final String[][] kunden = new String[][] { 
                        {"004", "Meyer", "Bob", "Aachen"}, {"002", "Schulz", "Alice", "Koeln"}, 
                        {"003", "Bauer", "Fred", "Essen"}, {"001", "Mueller", "Oscar", "Bochum"},
                        {"005", "Koenig", "Sam", "Muenster"} };
        Arrays.sort(kunden, new Comparator<String[]>()
        {
            public int compare(final String[] entry1, final String[] entry2)
            {
                final String a = entry1[1]; //frei waehlbarer Parameter zum Sortieren
                final String b = entry2[1]; //Kundennummer (0), Name (1), Vorname (2), Ort (3)
                return a.compareTo(b);      //Auf- bzw. absteigendes Sortieren mit (a) und (b) waehlbar
            }
        });
        
        for (final String[] c : kunden)
        {
            System.out.println(c[0] + "\t\t" + c[1] + "\t\t" + c[2] + "\t\t" + c[3]);
        }
        
        println ("Bitte den zu suchenden Namen eingeben: ");
//Ab hier weiss ich nicht mehr weiter
}

Ich habe locker 2 Stunden gegooglet, aber iwie nichts für mich brauchbares gefunden.
 
Dein 2D array gehst du mit 2 for-Schleifen durch:
Java:
 for (String[] subArray : array)
{
   for (String[] element: subArray)
  {
      if (..element equals target..)
        ..do something..
  }
}

Sofern du genau weißt, welcher Eintrag deines Arrays verglichen werden muss (z.B. Nachname), kannst du natürlich die innere Schleife weglassen.
 
Zuletzt bearbeitet:
Ich habe meinen Code insofern erweitert
Java:
        System.out.println ("Bitte den zu suchenden Namen eingeben: ");
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        scan.close();
        
        for (String[] subArray:kunden)
        {
            if(Arrays.asList(kunden).contains(s))
            System.out.println("Test");
        }
Was muss ich denn bei subArray eintragen ?
Kann das überhaupt so funktionieren ?
 
Kann das überhaupt so funktionieren ?

Unwahrscheinlich.

Wieso machst du nicht das, was dir oben vorgeschlagen wurde?

Du musst dir besonders am Anfang auch Klar machen, was du da machst.

"gehe jedes Element durch und schaue ob"

for( ..)

if (lalalal)

Dazu muss man sowohl die For schleife kennen als auch ein if-Konstukt schreiben können. Wie das geht steht meist auf den erstne paar Seiten eines Buches. Ohne Buch hast du hier keine Chance.
 
Naja. So viele Möglichkeiten gibt es ja nicht.

Schreib mal ne for schleife die so oft ausgeführt wird, wie es Elemente in Array gibt.

Wenn das Array also 199 groß ist, soll die schleife 199 mal ausgeführt werden.
 
Da steckt ein "kleines" Fehlerchen drin:
Dein 2D array gehst du mit 2 for-Schleifen durch:
Java:
for (String[] subArray : array)
{
   for (String[] element: subArray)
  {
      if (..element equals target..)
        ..do something..
  }
}
element ist dann natürlich nicht "String[]", sondern nur "String", also:
Java:
for( String[] subArray : array )
{
  for( String element : subArray ) // HIER
  {
    if( element.equals( gesuchtem ) )
    {
      // found! ...do something...
    }
  }
}
 

Zurück
Oben