Co robi:Co właściwie zwraca system.in.read?
System.in.read()
zwrot? documentation mówi:
Powroty: następny bajt danych lub -1 jeśli zostanie osiągnięty koniec strumienia.
Ale na przykład jeśli wejdę: 10
wrócę 49
. Dlaczego ?
Co robi:Co właściwie zwraca system.in.read?
System.in.read()
zwrot? documentation mówi:
Powroty: następny bajt danych lub -1 jeśli zostanie osiągnięty koniec strumienia.
Ale na przykład jeśli wejdę: 10
wrócę 49
. Dlaczego ?
49
to wartość ASCII znaku 1
. Jest to wartość pierwszego bajtu.
strumień bajtów, które są wytwarzane, kiedy wchodzi Wpisz na konsoli lub terminala zawiera trzy bajty {49,48,10}
(na moim Macu, może skończyć z 10,12 lub 12 zamiast 10, w zależności od systemu).
więc wyjście z tego prostego fragmentu
int b = System.in.read();
while (b != -1) {
System.out.println(b);
b = System.in.read();
}
po wprowadzeniu 10 i uderzanie wejść, jest (na moim komputerze)
49
48
10
Po wprowadzeniu 10
, to nie jest odczytywane jako integer, ale jako ciąg lub, dokładniej, tablica bajtów.
49 to kod ASCII dla postaci 1
.
System.in.read()
czyta tylko jeden bajt.
jest Unicode wartość zadana dla .
próby drukowania:
System.out.println((char)49);
Pomoże Ci to zrozumieć więcej.
dlaczego nie czyta całego "10"? – saplingPro
Ponieważ "10" to dwa bajty. Bajt reprezentujący znak 1, po którym następuje bajt reprezentujący znak "0". –
@saplingPro 'System.in.read()' czyta tylko jeden bajt. – Maroun