[Java] hasNextChar() und getchar()

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von allstar, 29. Oktober 2010 .

Schlagworte:
  1. 29. Oktober 2010
    hasNextChar() und getchar()

    folgendes problem habe ich:

    also ich hab als übung einen nicht vollständigen quelltext bekommen. es geht darum, dass eine txt datei eingelesen wird und dann die menge der wörter ausgegeben wird. ich muss den teil schreiben in dem die wörter gezählt werden, der teil in dem die txt datei eingelesen wird, ist schon fertig.

    wir sollen dafür die methoden hasNextChar() und getChar() benutzen. ich sag euch mal wie weit ich bin.

    also hasNextChar() prüft ob ein zeichen zum einlesen da ist und gibt mir dann ein boolean true(für zeichen vorhanden) oder false(für nicht vorhanden) aus.

    getChar() liest im falle eines trues das zeichen ein.


    mein konzept sieht jetzt so aus, dass die datei eingelesen wird und ich den wortcount um einen zähler erhöhe wenn nach einembuchstaben ein sonderzeichen oder leerzeichen kommt(den teil in dem man die zeichen unterscheidet überlege ich mir später noch, ich möchte erstmal alle zeichen eingelesen bekommen).


    wenn alle zeichen eingelesen wurden, gibt mit hasNextChar() ein false aus und damit ist die sache auch gegessen.


    das problem ist nur, ich hab die beiden methoden nie im einsatz gesehen und hab deswegen keine ahnung wie man sie in seinem quellcode verwenden kann.

    ich hoffe euch ist mein problem klar geworden.


    für hilfe gibt es selbstvrständlich einen 10er




    mfg allstar
     
  2. 29. Oktober 2010
    AW: hasNextChar() und getchar()

    Ein bisschen mehr details wären sinnvoll.
    Wenn ihr die Textdatei einliesst habt ihr dann ein string oder ein anderes objekt?

    Welche Klasse sollte diese beiden Methoden bereitstellen (hasNextChar() und getchar()) ?? Mir fällt im ersten Moment keine zugehörige Klasse ein. Ist es möglich das ihr diese Methoden selbst implementieren müsst?

    Code:
    boolean hastNextChar() {
     // index ist eine membervariable und beinhaltet die aktuelle position innerhalb des eingelesenen textes
     return index < meinString.length();
    }
    
    char getChar() {
     return meinString.charAt(index);
    }
    
    und das wäre es gewesen.

    Gruß
     
  3. 29. Oktober 2010
    AW: hasNextChar() und getchar()

    also der quellcode sieht so aus. an die stelle an der das rote comment steht, kommt mein quelltext hin.


    PHP:
    import java . io . FileInputStream ;
    import java . io . IOException ;
    import java . io . InputStreamReader ;

    public class 
    WoerterZaehlen  {
        public static 
    void main ( String []  args ) {
            
    int wordCount  0 ;
            


            /* Ab hier dürft ihr nichts mehr ändern. */
            
    System . out . println ( "Anzahl der Wörter: "  wordCount );
        }
        
        private static 
    InputStreamReader reader ;
        private static 
    int next  = - 1 ;

        public static 
    boolean hasNextChar () {
            if(
    next  != - 1 )
                return 
    true ;
            try {
                if(
    reader  ==  null )
                    
    reader  = new  InputStreamReader (new  FileInputStream ( "textdatei.txt" ));
                
    next  reader . read ();
                    
            } catch (
    IOException e ) {
                
    System . out . println ( "Datei wurde nicht gefunden." );
            }
            return 
    next  != - 1 ;
        }
        
        public static 
    char getChar () {
            
    char c  = ( char next ;
            
    next  = - 1 ;
            return 
    c ;
        }
    }

    kann mir einer vielleicht noch erklären was IOException und reader= new imputstreamreader bedeuten und was genau sie machen?

    wie haben nur ein string zum auslesen.


    PS: bitte keine lösung, ich möchte schritt für schritt selbst auf die lösung kommen.

    mfg allstar
     
  4. 29. Oktober 2010
    AW: hasNextChar() und getchar()

    du kannst die methoden hasNextChar() und getChar() direkt aufrufen

    beispiel:
    Code:
    while(hastNextChar()) {
     char currentChar = getChar();
    
     // TODO deine abfragen
    }
    
    Exceptions werden geworfen wenn ein Fehler auftaucht. Die genaue beschreibung siehst du hier, wenn die exception geworfen wird bzw. FileInputStream:
    http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileInputStream.html

    Die FileNotFoundException ist direkt von der IOException abgeleitet, weshalb du in dem try catch block IOExceptions abfangen kannst.

    gruß
     
  5. 2. November 2010
    AW: hasNextChar() und getchar()

    danke dir dafür, ich hab das soweit auch schon hinbekommen mit meinem quellcode nur jetzt hab ich wieder ein problem bei dem ich nicht weiterkomme.

    mit einer if anweisung bekomme ich den wordcount auch hoch, nur leider nicht so wie ich es haben will.

    hab als erstes die bedingung gestellt, dass ein char ein leerzeichen sein soll dann wird wordcount++.
    problem dabei, mehrere leerzeichen zwischen zwei wörtern bringen den wordcount mehrmals ++

    außerdem werden zwei wörter die nur von einem komma getrennt werden als ein wort gezählt.

    mir fällt auch irgendwie kein rezept ein es zu lösen. ich muss dem compiler irgendwie vermitteln, dass zwei leerzeichen nicht als wort gelten und dass satzzeichen zwischen zwei leerzeichen nicht auch als wort gezählt werden.

    hat irgendjemand eine idee?


    mfg allstar
     
  6. 3. November 2010
    AW: hasNextChar() und getchar()

    du könntest dir eine methode schreiben, welche dir dir nächste zeichen nach dem derzeitigen zeichen zurück gibt. so hättest du die möglichkeiten dein problem zu lösen.
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.