InputStream, metoda read()

InputStream, metoda read()
R3
  • Rejestracja:ponad 8 lat
  • Ostatnio:około rok
  • Postów:64
0

Witam, napisalem prosty programik do wczytywania znakow i pokazywania jaki to znak w tablicy ascii , jednak natrafilem na pewne problemy, w dokumentacji jest napisane ze metoda read() : " If no byte is available because the end of the stream has been reached, the value -1 is returned. " Jednak gdy daje jako warunek, zeby program zwrocil "-1" (jak nie ma zadnego bajta wiec nie ma do wczytania tekstu to zakonczy swoje dzialanie), jednak gdy wpisze np. 'a' to wyswietla mi oporcz "a = 97", w kolejnej lini jeszcze " = 13" , kolejna jedna linia wolna a w jeszcze kolejnej: " = 10" , dodatkowo program nadal nie skonczyl dzialania, co to jest te 13 i 10? i skad ten enter pomiedzy 13 i 10? i czemu wgl program nie konczy dzialania tylko wyswietla mi to? Pozdrawiam

Kopiuj
InputStream strumien = System.in;
 
try {
    int znak;
    while((znak= strumien.read())!=-1){
        System.out.println((char)znak + " = " + znak);
    }
     
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
IC
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 6 lat
  • Postów:18
0
R3
  • Rejestracja:ponad 8 lat
  • Ostatnio:około rok
  • Postów:64
0

Czyli nie zwraca to nigdy -1 , poniewaz bedzie zawsze dostepny bajt na CR i LF ? i czemu na poczatku jest CR a potem dopiero LF ? na moja logike na poczatku powinien byc wyswietlany LF bo konczymy linie a dopiero potem CR (przeniesienie karetki).

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Na moją logikę jest odwrotnie - wpierw cofamy karetkę (CR) by móc nadpisać (poprawić) a potem wysuwamy linię. W czasach prehistorycznych, drukarki igłowe w taki sposób poprawiały jakość wydruku: drukowały, cofały karetkę z drobnym przesunięciem i drukowały jeszcze raz to samo.
A co do zwracania -1, to spróbuj przerwać strumień wejściowy Ctrl+D lub Ctrl+Z (w zależności od SO).


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.