TT.EOL nie działa!

0

Odczytuję plik w taki sposób, że CAŁĄ pierwszą linijkę chcę odczytać do zmiennej 'tytuł' a z nastepnej linijki chce odczytac zmienne przez StreamTokenizer. Nie działa mi TT.EOL i petla wykonuje sie w nieskonczonosc.

BufferedReader br = new BufferedReader(fr);
		StreamTokenizer st = new StreamTokenizer(fr);
		try {
			while( (wartosc = st.nextToken()) != StreamTokenizer.TT_EOF ) 
			{
				while( wartosc != StreamTokenizer.TT_EOL) { tytul += st.sval; wartosc = st.nextToken(); }
				//if(wartosc == StreamTokenizer.TT_WORD) { tytul = st.sval; wartosc = st.nextToken(); }
				//else { System.exit(2); }
				if(wartosc == StreamTokenizer.TT_WORD) { rezyser = st.sval; wartosc = st.nextToken(); }
				else { System.exit(3); }
				if(wartosc == StreamTokenizer.TT_NUMBER) { rok_produkcji = (int) st.nval; wartosc = st.nextToken(); }
				else { System.exit(4); }
				if(wartosc == StreamTokenizer.TT_WORD) nosnik = st.sval;
				else { System.exit(5); }	
				
				baza.add( new Film(tytul, rezyser, rok_produkcji, nosnik) );
			}
		} catch (IOException e) {
			System.out.println(e);
			System.exit(6);
		}
0

Wystarczy przeczytać dokumentację (metoda eolIsSignificant)
http://docs.oracle.com/javase/6/docs/api/java/io/StreamTokenizer.html#eolIsSignificant%28boolean%29

Dodatkowo:
-zmienna br nie jest używana
-musisz zmienić pętlę "while( wartosc != StreamTokenizer.TT_EOL)" na "while( wartosc != StreamTokenizer.TT_EOL && wartosc != StreamTokenizer.TT_EOF)" inaczej zapętlisz się na końcu pliku

0

Ok, działa, wielkie dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1