2017-04-14 16 views
2
public class Test{ 
    public static void main(String [] args){ 

     BufferedReader reader = new BufferedReader(new 
     InputStreamReader(System.in)); 
     System.out.println("Enter number?"); 
     int num = br.read(); 
     System.out.println("You entered " + num); 
    } 
} 

私が97として入力すると、出力として57が返されます。なぜですか? readメソッドがintを返し、別のものを返すのはなぜですか?また、br.read()を(char)reader.read()に置き換えて、97として入力を与えた場合、出力は同じかどうかはわかりませんが、97が 'a'の文字に変換されることを意味します。私の考えははっきりしています。intがアスキー文字で表現されているのかUnicodeで表現されているのか混乱しています。BufferedReaderのread()メソッドはどのように動作しますか?

char c = '9'; 
int num = c; //reader.read(); 

出力を以下に示すように(97から最初の桁を取っ)

答えて

1

BufferedReaderread()方法は、単一の文字のみを読み取り、それは実際には数9のUnicode値を印刷しています。 57

は、問題を解決するには、行として入力を読んで、以下のように intに変換する readLine()を使用することができます。

int num = Integer.parseInt(reader.readLine()); 
0

readメソッドを使用していますが、これはただ1文字を読み込んだ後、その文字のASCIIまたはユニコードの値を返します。したがって、97を入力すると、それは文字9として読み取られ、57というASCII値が表示されます。

readメソッドの詳細については、https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#read() oracle docを参照してください。サンプル以下

別にBufferedReaderreadLine方法から、あなたがintを読み込むためのオプションが付属していますscannerクラスオブジェクトを使用することができ、長い、文字列などは、整数を読み取る方法を示しています。

Scanner scanner = new Scanner(System.in); 
     int a = scanner.nextInt(); 
     System.out.println("a"+a); 
0

read()は1文字返します。文字列 "9" int値は57

場合、入力97と出力97

int num = Integer.valueOf(reader.readLine()); // num is 97 

場合、入力97と出力A.

int num = Integer.valueOf(reader.readLine()); // num is 97 
char ch = Character.valueOf((char)num); // ch is A 
あります
関連する問題