import java.io.IOException;
import java.util.*;
public class Client {
public static void main(String[] args) {
try {
int temp=System.in.read();
if(temp==1){
System.out.println("不得错"+temp);
}
if(temp==2){
System.out.println("真的不得错"+temp);
}
else{
System.out.println("这是为什么呢?"+temp);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }}
我很纳闷,为什么输入数字1,结果输出49;输入2,结果输出50.。
这是为什么呢??

解决方案 »

  1.   

    得到的是ascii码啊
    1当然是49了。
      

  2.   

    准确说是 '1' (char) == 49 (int)
      

  3.   

    0 Ascii 48 
    1 Ascii 49 
    2 Ascii 50 
    3 Ascii 51 
    4 Ascii 52 
    5 Ascii 53 
    6 Ascii 54 
    7 Ascii 55 
    8 Ascii 56 
    9 Ascii 57 
    : Ascii 58 
    ; Ascii 59 
    < Ascii 60 
    = Ascii 61 
    > Ascii 62 
    ? Ascii 63 
    @ Ascii 64 
    A Ascii 65 
    B Ascii 66 
    C Ascii 67 
    D Ascii 68 
    E Ascii 69 
    F Ascii 70 
    G Ascii 71 
    H Ascii 72 
    I Ascii 73 
    J Ascii 74 
    K Ascii 75 
    L Ascii 76 
    M Ascii 77 
    N Ascii 78 
    O Ascii 79 
    P Ascii 80 
    Q Ascii 81 
    R Ascii 82 
    S Ascii 83 
    T Ascii 84 
    U Ascii 85 
    V Ascii 86 
    W Ascii 87 
    X Ascii 88 
    Y Ascii 89 
    Z Ascii 90 
    [ Ascii 91 
    \ Ascii 92 
    ] Ascii 93 
    ^ Ascii 94 
    _ Ascii 95 
    ` Ascii 96 
    a Ascii 97 
    b Ascii 98 
    c Ascii 99 
    d Ascii 100 
    e Ascii 101 
    f Ascii 102 
    g Ascii 103 
    h Ascii 104 
    i Ascii 105 
    j Ascii 106 
    k Ascii 107 
    l Ascii 108 
    m Ascii 109 
    n Ascii 110 
    o Ascii 111 
    p Ascii 112 
    q Ascii 113 
    r Ascii 114 
    s Ascii 115 
    t Ascii 116 
    u Ascii 117 
    v Ascii 118 
    w Ascii 119 
    x Ascii 120 
    y Ascii 121 
    z Ascii 122 
      

  4.   

    返回的是acsii码
    0的acsii码是48,1的是49,以此类推
      

  5.   

    try {            char temp = (char)System.in.read();            if (temp=='1') {                System.out.println("不得错"+temp);
                } else if (temp=='2') {                System.out.println("真的不得错"+temp);
                } else {                System.out.println("这是为什么呢?"+temp);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
      

  6.   

    用System.out.write(temp)输出就是原值
    返回流中的下一个byte(0~255) 具体是InputStream的某个子类的native方法所对应实现的