Erste Schritte Buchstaben im Array suchen

auroNpls

Mitglied
Hallo liebe Leute,

ich habe folgendes Problem bzw. Aufgabe zu bearbeiten:

Ich habe zwei Arrays, einmal ein eindimensionales Character Array "Zeile" (bspw. {O,L,L,A,H}), welches mit Buchstaben gefüllt ist. Dann habe ich noch ein zweidimensionales Character Array "Woerter", in welchem Wörter eingespeichert sind (bspw. Woerter[1][j] = {H,A,L,L,O}).

Nun soll ich die einzelnen Zeichen aus dem Array Wörter mit dem Array Zeile vergleichen und bestimmen, ab welcher Position in dem Array die Wörter beginnen und in welche Richtung dieses Wort geschrieben wird.

Ich hab folgenden Ansatz gewählt:
Java:
char[] zeile = {'F','G','C','O','L','L','A','H','R','X','B','E',
            'I','S','P','I','E','L','Y','E','S','U','A','H'};

    char[][] woerter = {
        {'H','A','L','L','O'},
        {'B','E','I','S','P','I','E','L'},
        {'H','A','U','S'},
    };

    for(int i = 0; i < woerter.length; i++) {
        for(int k = 0; k < zeile.length; k++) {
            for(int j = 0; j < woerter[i].length; j++) {
                if(zeile[k] == woerter[i][j]) {
                    System.out.println("ab Position " + k);
                }
        }
    }
    }

Nun würde ich gerne wissen, ob das so überhaupt logisch gedacht ist mein Ansatz bzw. die for-Schleifen richtig gesetzt sind. Ich muss noch dazu sagen, dass wir die getChar()-Methode hier nicht benutzen dürfen bzw. noch nicht hatten.

Vielen Dank schon mal!
 

mihe7

Top Contributor
Mal von vorne:
  1. Du hast eine Liste von Wörtern und eine Zeile, in der evtl. diese Wörter vorkommen, ggf. jedoch in umgekehrter Reihenfolge geschrieben sind.
  2. Du sollst diese Wörter finden, auch wenn sie umgekehrt geschrieben in der Zeile stehen
  3. Falls es das Wort in der Zeile gibt, sollst Du angeben, ob das Wort in der Zeile in normaler oder umgekehrter Reihenfolge geschrieben ist,
  4. außerdem, wo das Wort in der Zeile beginnt.
Der letzte Punkt ist nicht eindeutig. Beginnt "HALLO" in der Zeile "OLLAH" beim O oder beim H?
 

MoxxiManagarm

Top Contributor
3 verschachtelte Schleifen sind immer unschön wie ich finde...

Mein Vorschlag mit einer Schleife:
Java:
package javaforum.org.buchstabenpuzzle;

import java.util.Arrays;


public class Buchstabensuppe {
    public static void main(String... args) {
        char[] zeile = {'F','G','C','O','L','L','A','H','R','X','B','E',
            'I','S','P','I','E','L','Y','E','S','U','A','H'};
       
        char[] wort = {'S','P','I','E','L'};
        char[] reversed = new StringBuilder(String.valueOf(wort))
                .reverse().toString().toCharArray();
       
        for(int i = 0; i <= zeile.length - wort.length; i++) {
            char[] subArray = Arrays.copyOfRange(zeile, i, i + wort.length);
           
            if(Arrays.equals(subArray, wort) || Arrays.equals(subArray, reversed)) {
                System.out.println("Found at: " + i);
            }
        }
    }
}
 

auroNpls

Mitglied
Mal von vorne:
  1. Du hast eine Liste von Wörtern und eine Zeile, in der evtl. diese Wörter vorkommen, ggf. jedoch in umgekehrter Reihenfolge geschrieben sind.
  2. Du sollst diese Wörter finden, auch wenn sie umgekehrt geschrieben in der Zeile stehen
  3. Falls es das Wort in der Zeile gibt, sollst Du angeben, ob das Wort in der Zeile in normaler oder umgekehrter Reihenfolge geschrieben ist,
  4. außerdem, wo das Wort in der Zeile beginnt.
Der letzte Punkt ist nicht eindeutig. Beginnt "HALLO" in der Zeile "OLLAH" beim O oder beim H?

Sorry für die komplizierte Erklärung. In diesem Fall beginnt es bei "H", welches auf der Position 7 wäre (wenn man von 0 anfängt zu zählen) und ist nach links geschrieben. Die Ausgabe wäre dann in diesem Fall "ab Position 9 <--- HALLO", wobei der Pfeil "<---" andeutet in welche Richtung das Wort geschrieben wird. Also hätte ich zwei Pfeile "--->" für Wörter die in der Zeile vorkommen von links nach rechts und "<---" für Wörter die vorkommen von rechts nach links.
 

auroNpls

Mitglied
3 verschachtelte Schleifen sind immer unschön wie ich finde...

Mein Vorschlag mit einer Schleife:
Java:
package javaforum.org.buchstabenpuzzle;

import java.util.Arrays;


public class Buchstabensuppe {
    public static void main(String... args) {
        char[] zeile = {'F','G','C','O','L','L','A','H','R','X','B','E',
            'I','S','P','I','E','L','Y','E','S','U','A','H'};
      
        char[] wort = {'S','P','I','E','L'};
        char[] reversed = new StringBuilder(String.valueOf(wort))
                .reverse().toString().toCharArray();
      
        for(int i = 0; i <= zeile.length - wort.length; i++) {
            char[] subArray = Arrays.copyOfRange(zeile, i, i + wort.length);
          
            if(Arrays.equals(subArray, wort) || Arrays.equals(subArray, reversed)) {
                System.out.println("Found at: " + i);
            }
        }
    }
}

Ich glaube leider nicht, dass ich ein drittes bzw. viertes Array hinzufügen darf. Also ich soll mit dem Array "woerter" in dem Array "zeile" die einzelnen Character finden und überprüfen, ab welcher Position das Wort (Position des Anfangsbuchstabens des Wortes in dem Array "Zeile") enthalten ist und in welche Richtung es geschrieben wird. (siehe Post darüber)
 

mihe7

Top Contributor
Es wäre natürlich schöner, wenn Du z. B. weitere Arrays hinzufügen dürftest, aber gut. Vermutlich auch keine eigenen Methoden...

Die einfachste Variante ist immer noch die, für jede Position der Zeile zu prüfen, ob ein Wort beginnt:
Java:
for (int w = 0; w < woerter.length; w++) {
    char[] wort = woerter[w]; // falls verboten -> Ersetzung unten
    for (int i = 0; i < zeile.length - wort.length + 1; i++) {
        boolean enthalten = true;
        for (int j = 0; enthalten && j < wort.length; j++) {
            enthalten = zeile[i + j] == wort[j];
        }
        if (enthalten) { 
            // gib "ab Position i ----> wort" aus
        }
    }
    // analog nochmal für die Rückrichtung
}
 

auroNpls

Mitglied
Es wäre natürlich schöner, wenn Du z. B. weitere Arrays hinzufügen dürftest, aber gut. Vermutlich auch keine eigenen Methoden...

Die einfachste Variante ist immer noch die, für jede Position der Zeile zu prüfen, ob ein Wort beginnt:
Java:
for (int w = 0; w < woerter.length; w++) {
    char[] wort = woerter[w]; // falls verboten -> Ersetzung unten
    for (int i = 0; i < zeile.length - wort.length + 1; i++) {
        boolean enthalten = true;
        for (int j = 0; enthalten && j < wort.length; j++) {
            enthalten = zeile[i + j] == wort[j];
        }
        if (enthalten) {
            // gib "ab Position i ----> wort" aus
        }
    }
    // analog nochmal für die Rückrichtung
}

Zu der Rückrichtung, die ich analog machen soll:
Java:
    for(int w = woerter.length - 1; w >= 0; w--) {
       char[] wort = woerter[w];
       for(int i = zeile.length - 1; i >= wort.length - 1; i--) {
           boolean enthalten = true;
           for(int j = wort.length - 1; enthalten && j >= 0; j--) {
               enthalten = zeile[i - j] == wort[j];
               }
           if (enthalten) {
               System.out.print("Ab Position " + (i+1) + " <--- ");
               System.out.print(wort);
               System.out.println();
              
           }  
       }
   }

Hier erhalte ich als Ausgabe zwar die richtigen Positionen, nur in aufsteigender Reihenfolge.

D.h.
Code:
Ab Position 4 ---> wort
Ab Position 11 ---> wort
Ab Position 30 ---> wort
Ab Position 3 <--- wort
Ab Position 25 <--- wort
Ab Position 29 <--- wort
Ab Position 36 <--- wort

Stattdessen sollte die Ausgabe so aussehen:

Code:
Ab Position 4 ---> wort
Ab Position 11 ---> wort
Ab Position 30 ---> wort
Ab Position 36 <--- wort
Ab Position 29 <--- wort
Ab Position 25 <--- wort
Ab Position 3 <--- wort

Habe meinen Fehler entdeckt!
Java:
for(int w = 0; w < woerter.length; w++) {
       char[] wort = woerter[w];
       for(int i = zeile.length - 1; i >= wort.length - 1; i--) {
           boolean enthalten = true;
           for(int j = wort.length - 1; enthalten && j >= 0; j--) {
               enthalten = zeile[i - j] == wort[j];
               }
           if (enthalten) {
               System.out.print("Ab Position " + (i+1) + " <--- ");
               System.out.print(wort);
               System.out.println();
            
           }
       }
   }

So müsste die Rückwärtsschleife lauten!
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Ja, sieht richtig aus. Je nachdem, ob Du die Ausgabe nach Hin- und Rückrichtung gruppiert haben willst, kannst Du die zwei woerter-for-Schleifen nacheinander ausführen oder zu einer zusammenfassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
J Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
G Erste Schritte Einen Array absuchen und Buchstaben zählen Java Basics - Anfänger-Themen 17
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
K Zahlen und buchstaben gemeinsam in ein array? Java Basics - Anfänger-Themen 17
M jeden 2ten Buchstaben aus array Java Basics - Anfänger-Themen 6
G Zufällige Buchstaben in char-Array Java Basics - Anfänger-Themen 9
L Buchstaben entfernen zipZap Java Basics - Anfänger-Themen 8
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
S Buchstaben Programmierung Bedeutung Java Basics - Anfänger-Themen 4
H Buchstaben zählen Java Basics - Anfänger-Themen 9
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
Tom/S KeyCode zu Buchstaben Java Basics - Anfänger-Themen 0
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
J Buchstaben aus textArea extrahieren Java Basics - Anfänger-Themen 4
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
O FilterStream häufigkeit der Buchstaben Java Basics - Anfänger-Themen 43
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
H Anzahl verschiedener Buchstaben im String Java Basics - Anfänger-Themen 41
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
J Für jeden Buchstaben eine Zahl Java Basics - Anfänger-Themen 1
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
x-tshainge Zahlen Buchstaben zuordnen Java Basics - Anfänger-Themen 4
T Datentypen char als Buchstaben statt als Zahl ausgeben Java Basics - Anfänger-Themen 4
M replace Methode für Buchstaben Java Basics - Anfänger-Themen 29
L Feld mit beliebiger Anzahl von Buchstaben füllen... Java Basics - Anfänger-Themen 5
J Methoden Eingabe Methode nur Buchstaben Java Basics - Anfänger-Themen 4
I Hilfe beim löschen von Buchstaben. Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
V char Eingabe aber nur für Buchstaben Java Basics - Anfänger-Themen 4
J Zufällige Buchstaben Java Basics - Anfänger-Themen 45
C Klassen Positionszähler auf Buchstaben setzen Java Basics - Anfänger-Themen 14
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
S Input/Output Buchstaben in Eingabe finden und ausgeben Java Basics - Anfänger-Themen 5
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
Bregedur String beim nächstem groß geschriebenen Buchstaben trennen Java Basics - Anfänger-Themen 1
E Input/Output Konsole erkennt meinen Buchstaben nicht Java Basics - Anfänger-Themen 12
F Häufigkeit von Buchstaben Java Basics - Anfänger-Themen 7
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
I Programm, welches eine Textzeile einliest und alle darin enthaltenen Buchstaben umwandelt Java Basics - Anfänger-Themen 3
S String ab dem Wechsel Buchstaben zu Zahlen splitten Java Basics - Anfänger-Themen 14
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
M String überprüfen ob nur Buchstaben enthalten sind? Java Basics - Anfänger-Themen 10
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
B Zahlen und Buchstaben in cmd eingeben Java Basics - Anfänger-Themen 5
J Buchstaben aus String einzeln Zählen Java Basics - Anfänger-Themen 12
S nur Buchstaben in JTextField Java Basics - Anfänger-Themen 3
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
V Zufallsgenerator für Buchstaben Java Basics - Anfänger-Themen 22
A Erste Schritte konsoleneingabe von Buchstaben Java Basics - Anfänger-Themen 3
M Von File lesen Buchstaben lesen und zählen - scheitert an der Eingabe Java Basics - Anfänger-Themen 4
K Methoden Kontrollstruktur versagt bei Buchstaben... Java Basics - Anfänger-Themen 6
E Buchstaben nach Größe vergleichen Java Basics - Anfänger-Themen 4
M Benennung nach Buchstaben Java Basics - Anfänger-Themen 18
M Erste Schritte zwei Buchstaben die im String enthalten sind ausgeben Java Basics - Anfänger-Themen 21
J Programm zum Buchstaben austauschen, logikproblem Java Basics - Anfänger-Themen 2
T keine buchstaben!nur zahlen eingabe möglich Java Basics - Anfänger-Themen 48
P toUpperCase() - Buchstaben die ersetzt werden als Großbuchstaben ausgeben Java Basics - Anfänger-Themen 5
R Regexp nur Buchstaben und Ziffener beliebig oft Java Basics - Anfänger-Themen 3
S Buchstaben/Wörter im String zählen Java Basics - Anfänger-Themen 6
R buchstaben einlesen - fehlermeldung schreiben? Java Basics - Anfänger-Themen 9
M String (mit Buchstaben) zu Int Java Basics - Anfänger-Themen 6
D Buchstaben den jeweiligen Zahlen hinzufügen mit einer if. Java Basics - Anfänger-Themen 6
F Datentypen Zufällige Buchstaben vertauschen Java Basics - Anfänger-Themen 3
F Leerzeichen zwischen jeden Buchstaben eines Strings einfügen Java Basics - Anfänger-Themen 16
J Buchstaben zählen Java Basics - Anfänger-Themen 17
H String zerlegen in einzelne Buchstaben (char)?? Java Basics - Anfänger-Themen 7
R buchstaben zählen Java Basics - Anfänger-Themen 8
R In einem Palindrom 2 Buchstaben vergleichen Java Basics - Anfänger-Themen 16
J Anzahl der Buchstaben in einem String Java Basics - Anfänger-Themen 12
P Buchstaben: Haeufigkeitstabelle Java Basics - Anfänger-Themen 9
S String Elemente bzw. Buchstaben miteinander vertauschen? Java Basics - Anfänger-Themen 6
T JTextField max. 8 Zeichen, nur Buchstaben Java Basics - Anfänger-Themen 8
C ASCII Codes in Buchstaben umwandeln Java Basics - Anfänger-Themen 2
J Buchstaben einlesen Java Basics - Anfänger-Themen 8
V Anzahl eines Buchstaben in einem String zählen Java Basics - Anfänger-Themen 7
J Buchstaben zählen Java Basics - Anfänger-Themen 4
T Buchstaben an bestimmter Stelle aus String lesen Java Basics - Anfänger-Themen 5
A eingelesene String in buchstaben teilen Java Basics - Anfänger-Themen 9
D Suche in JList nach dem ersten Buchstaben Java Basics - Anfänger-Themen 2
G Griechische statt lateinischen Buchstaben beim Schreiben Java Basics - Anfänger-Themen 9
X Auswahl durch Eingabe von Buchstaben - aber wie? Java Basics - Anfänger-Themen 2
T Ersten Buchstaben in einem Wort groß schreiben. Java Basics - Anfänger-Themen 6
N alle "3er" Möglichkeiten aus 10 Buchstaben Java Basics - Anfänger-Themen 6
A Beliebiger String --> Buchstaben und Zahlen Java Basics - Anfänger-Themen 4
G Griechische Buchstaben Java Basics - Anfänger-Themen 6
C bestimmte Buchstaben in einem String ändern Java Basics - Anfänger-Themen 5
C Variablentyp gesuch, der Zahlen und Buchstaben beinhaltet Java Basics - Anfänger-Themen 20
I Prüfen, ob String Buchstaben enthält Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben