Klassen Positionszähler auf Buchstaben setzen

Castyll

Aktives Mitglied
Hallo,
Ich habe die Aufgabe bekommen einen übergegebenen Text zu filtern. Zunächst soll ich dafür die einzelnen Wörter extrahieren. Dafür wurde mir eine Anleitung gegeben:
Definieren Sie sich zwei Positionszähler pos1 und pos2 vom Typ
int und extrahieren Sie nacheinander alle (jeweils durch ein oder
mehrere Leerzeichen getrennte) Worte aus dem Text, indem Sie
jeweils
– den ersten Positionszähler auf den ersten Buchstaben des nächsten
Worts setzen. Erhöhen Sie dazu den Zähler pos1 solange,
bis Sie ein Zeichen finden, das kein Leerzeichen ist.
– Setzen Sie dann den zweiten Positionszähler pos auf den Wert
pos1+1 und erhöhen Sie ihn anschließend solange, bis Sie auf
ein Leerzeichen treffen. Extrahieren Sie dann das Wort mit
Hilfe der Instanzen-Methode substring der Klasse String.
Fügen Sie dann das Wort in die Liste ein, die zu dem Anfangsbuchstaben
des Worts gehört. Ist das erste Zeichen in
dem Wort kein Buchstabe aus dem Bereich ’a’ - ’z’ (weil z.B.
noch Zahlzeichen oder andere Sonderzeichen im Text sind),
ignorieren Sie das Wort.
– Setzen Sie danach den Positionszeiger pos1 um eins höher als
pos2
Die ganze Aufgabe und wie ich die Methode zu schreiben habe ist mir klar, jedoch komme ich einfach nicht drauf, wie ich einem Integer, also dem Positionszähler, einem einzelnem Buchstabe zuweisen soll. Gibt es da eine bestimmte Methode, die mir dies ermöglicht?
 

Bitfehler

Bekanntes Mitglied
Du hast einen Satz und die beiden int pos1 und pos2. Wenn du anfängst, setzt du pos1 auf 0. pos2 wird solange erhöht, bist du ein Leerzeichen findest. Nun kannst du mit den beiden pos das Wort "ausscheiden". Um das nächste Wort zu finden, setzt du pos1 = pos2+1 und zählst pos2 weiter hoch bis zum nächsten Leerzeichen oder Satzende. Der Buchstabe wird nicht dem int zugewiesen, sondern immer nur die Position der Buchstaben.
So steht es in der Aufgabe, weshalb du es dann wohl so machen sollst, obwohl es sicher auch andere Lösungen dafür gibt.
 

InfectedBytes

Top Contributor
du sollst pos1 und pos2 auch keinen buchstaben zuweisen. Du sollst darin nur die Positionen speichern.
Du hast also einen String in welchem dein Text steht. Nun kannst du auf dem String die Methode charAt(index) benutzen um das Zeichen an der entsprechenden stelle zu bekommen.

Du erhöhst also deine positionen und guckst nach was für ein zeichen sich an der stelle im string befindet
 

Castyll

Aktives Mitglied
@InfectedBytes @Bitfehler Danke euch beiden! Ich habe nun einen Code zusammengebracht, kompiliert auch fehlerlos, bekomme dann aber einen Out of bounds exception Fehlercode, was mich etwas verwirrt, da ich darauf geachtet habe die Arrays nicht zu überschreiten.

Java:
StrListe [] alist = new StrListe [26];
    char [] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    int pos1;
 
    String wort;


    public void filtern()
    {  pos1=text.charAt(1);
        while(pos1!=text.length())
        {
            while (pos1== ' ')
            {
            pos1++;
            }
     
            int pos2=pos1+1;
            while(pos2!= ' ')
            {
            pos2++;
            }
    
            wort = text.substring(pos1, pos2);
    
            for (int i=0; i<alphabet.length;i++)
            {
                if (wort.charAt(1)== alphabet[i])
                {
                alist[i].insert(new Wort(wort));
                break;
                }
            }
    
    
            pos1= pos2+1;
    
        }
    
        for(int k=0; k<alist.length;k++)
        {
            System.out.print("Worte mit " +alphabet[k] +"sind: "+alist[k]);
        }
    }
 
Zuletzt bearbeitet von einem Moderator:

InfectedBytes

Top Contributor
Das hier ist schon quatsch:
Java:
while (pos1== ' ')
            {
            pos1++;
            }
pos1 ist nur die position. Wenn dann musst schon charAt(pos1) == ' ' machen.
analog dann auch bei pos2
 

Tarrew

Top Contributor
Du musst in deinen while-Schleifen auch darauf achten, dass pos1 und pos2 nicht größer als text.length-1 werden.

Die Verwaltung der Listen lässt meiner Meinung nach schöner machen, indem du eine Map<Character, ArrayList<String>> benutzt. Dann kannst du den Character einfach immer als Key nehmen und musst nicht jedes Mal über jeden Buchstaben iterieren bis du deine passende Liste hast.

Also zB:
Java:
    public static void main(String[] args) {
       int p1 = 0,p2 = 0;
       String s = "A_Wort1     C_Wort1    A_Wort2 B_Wort1 C_Wort2  ";
       Map<Character, List<String>> m = new HashMap<Character, List<String>>();
       for(char c='a'; c<='z'; c++){
           m.put(c, new ArrayList<String>());
       }
          while(p1 < s.length()){
          //Deine Implementation
          List<String> list =  m.get(Character.toLowerCase(s.charAt(p1)));
          if(list!=null){
              list.add(s.substring(p1, p2));
          }
          p1=p2+1;
       }
    }

}
 

Castyll

Aktives Mitglied
Es wäre hilfreich, wenn du schreiben würdest in welcher Zeile denn der Fehler auftritt.
In Zeile 53, wo der Anfangsbuchstabe mit dem alphabets array verglichen wird.
Du musst in deinen while-Schleifen auch darauf achten, dass pos1 und pos2 nicht größer als text.length-1 werden.

Die Verwaltung der Listen lässt meiner Meinung nach schöner machen, indem du eine Map<Character, ArrayList<String>> benutzt. Dann kannst du den Character einfach immer als Key nehmen und musst nicht jedes Mal über jeden Buchstaben iterieren bis du deine passende Liste hast.

Also zB:
Java:
    public static void main(String[] args) {
       int p1 = 0,p2 = 0;
       String s = "A_Wort1     C_Wort1    A_Wort2 B_Wort1 C_Wort2  ";
       Map<Character, List<String>> m = new HashMap<Character, List<String>>();
       for(char c='a'; c<='z'; c++){
           m.put(c, new ArrayList<String>());
       }
       //Deine Implementation ...
           List<String> list =  m.get(Character.toLowerCase(s.charAt(p1)));
           if(list!=null){
               list.add(s.substring(p1, p2));
           }
           p1=p2+1;
       }
    }

}

Es ist eine studiumsaufgabe und wir sollen es soweit ich verstanden habe nur mit Werkzeuge lösen, die wir bereits in den Vorlesungen hatten. Jedoch werde ich deine version auch mal ausprobieren, vielen Dank für die Mühe!
 

Castyll

Aktives Mitglied
Kleiner Tipp, die reine Zeilennummer hilft uns nicht, da dein Quellcode nur einen Ausschnitt deines ganzen Codes darstellt. Am besten also direkt noch die entsprechende Zeile per copy&paste einfügen^^
Hallo, sorry für die späte Antwort! Bin jetzt wieder am PC:
Code:
alist[i].insert(new Wort(wort));
Bei der Zeile bekomme ich die Meldung Null Pointer Expection. Ich habe mich im Internet ein wenig informiert und anscheinend kann das damit zusammenhängen, dass für meine Listen während der Deklarierung nur der Speicherplatz reserviert wurde. Kann das sein ? Im Folgenden nochmal die Deklarierung:
Code:
StrListe [] alist = new StrListe[26];
//StrListe ist hier die Klassenliste
 

InfectedBytes

Top Contributor
du hast nun ein array was platz für 26 Referenzen hat.
Aber bisher ist jede einzelne davon null.
d.h. du musst dir erst konkrete Instanzen erstellen und zuweisen
 

InfectedBytes

Top Contributor
du erstellst nicht "nochmal" 26 Listen.
Du hast bisher gar keine erstellt, du hast nur ein Array erstellt.
Java:
StrListe [] alist = new StrListe[26];
for(int i=0; i<alist.length; i++) {
  alist[i] = new StrListe();
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
L Buchstaben entfernen zipZap Java Basics - Anfänger-Themen 8
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
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 Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
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
A Erste Schritte Buchstaben im Array suchen Java Basics - Anfänger-Themen 8
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
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
G Erste Schritte Einen Array absuchen und Buchstaben zählen Java Basics - Anfänger-Themen 17
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
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
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
K Zahlen und buchstaben gemeinsam in ein array? Java Basics - Anfänger-Themen 17
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
M jeden 2ten Buchstaben aus array Java Basics - Anfänger-Themen 6
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
Schandro Ersetzen von Buchstaben in einer readLine Java Basics - Anfänger-Themen 28

Ähnliche Java Themen

Neue Themen


Oben