2013-03-07 20 views

Odpowiedz

12

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 
+0

dlaczego nie czyta całego "10"? – saplingPro

+0

Ponieważ "10" to dwa bajty. Bajt reprezentujący znak 1, po którym następuje bajt reprezentujący znak "0". –

+0

@saplingPro 'System.in.read()' czyta tylko jeden bajt. – Maroun

3

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.

4

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.

Powiązane problemy