Sehr eigenartiger Fehler vom StreamTokenizer



  • Ich hab ein Programm geschrieben, das eine Lottokombination a,b,c,d,e,f übergeben bekommt und diese mit dem Inhalt einer Textdatei überprüft in der schon Lottozahlen enthalten sind, wenn eine davon aus der Datei mit der übergebenen a,b,c,d,e,f übereinstimmt, dann soll die Methode ein true zurückgeben.

    DAS PROBLEM ist das mein StreamTokenizer hier die Zahlen aus der Textdatei einzeln, also zeichenweise einliest. wenn in der datei die kombination 2, 13, 34, 36, 43, 48 ist, dann liest er das so: 2, 1, 3, 3, 4, 3, 6, 4, 3, 4, 8.
    Also zeichenweise, das soll er aber NICHT. Was mach ich da falsch. Ich hab einfach die Kombination 1,2,3,4,5,6 übergeben und gebe zum testen die Zahl aus die er einliest aus der Textdatei und er liest es eben falsch ein. irgendwie erkennt er nicht das 43 eben 43 als Token ist und nicht 4 als Token und 3 als Token.

    HIER DER CODE:

    import java.io.StreamTokenizer;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    
    class LottoFilterSwap
    {
        public static void main(String[] args) throws IOException
        {
            f_swap(1,2,3,4,5,6); //irgendeine kombi übergeben
        }
        public static boolean f_swap(int a, int b, int c, int d, int e, int f) throws IOException
        {
            boolean ist = false;
            int[] ka = new int[6]; // Array für eine Kombi aus der Datei
            int row_p;
            int zeile = 1;
            StreamTokenizer st = new StreamTokenizer(new FileReader("datan2.txt"));
            st.eolIsSignificant( true ); // Um EOL finden zu können
            st.parseNumbers();
            while(st.ttype != StreamTokenizer.TT_EOF) //solange tun bis Dateiende
            {
                row_p = 0;
                while(st.ttype != StreamTokenizer.TT_EOL) //solange tun bis Zeilenende
                {
                    while(st.ttype != StreamTokenizer.TT_NUMBER) //solange tun bis Zahl auftritt
                    {
                        st.nextToken(); //bis Zahl auftritt, restliche Tokentypen ignorieren
                    }
                    System.out.println((int)st.nval + " "); //Hier gibt er das gelesene aus, zum testen
                    ka[row_p] = (int)st.nval; //Hier die Kombi im Array abspeichern
                    row_p += 1;
    
                    st.nextToken(); //naechster Bitte
                }
    
                //System.out.println(zeile + ": Zahl hinzugefuegt");
                zeile += 1;
                if((ka[0] == a) && (ka[1] == b) && (ka[2] == c) && (ka[3] == d) && (ka[4] == e) && (ka[5] == f))
                {
                    System.out.println("STIMMT"); // wenn Kombi aus Datei mit übergebener gleich, dann true
                    return true;
                }
            }
            System.out.println("Datenende erreicht"); // ende
            return ist;
        }
    }
    

    😮 😮 😮 😮 😕 😕 😕 😕


Anmelden zum Antworten