Java键盘输入怎么会这样?

import java.io.*;
public class Z{
static int x,y;
public static void main(String[] args){

try{
x=System.in.read();
y=System.in.read();
} catch(Exception e){}
int z=x+y;
System.out.println(z);
System.out.println((char)x);
System.out.println((char)y);
}
}
我输入12后怎么会有
import java.io.*;
public class Z{
static int x,y;
public static void main(String[] args){

try{
x=System.in.read();
y=System.in.read();
} catch(Exception e){}
int z=x+y;
System.out.println(z);
System.out.println((char)x);
System.out.println((char)y);
}
}

我输入12后怎么会是这个结果,而不是3 1 2这样的结果
程序我搞重复了,看后面一段就行了

System.in.read()这条语句默认读出的数据是char的,
因为默认接收到的是char型的,然后才转换成int型,所以你应该要知道char和int的对应关系
char '0' 对应 int 48
char '1' 对应 int 49
char ' 2'对应int 50
代码中用了两次System.in.read() 所有你输入12就是读取了char'1'和char'2',所以结果就是49+50=99;
想要得到你要的结果用Scanner就行了追问

try{Scanner sc=new Scanner(System.in);

x=sc.nextInt();

y=sc.nextInt();

} catch(Exception e){}

int z=x+y;

System.out.println(z);

System.out.println((char)x);

System.out.println((char)y);

}

}

我把代码改成了这样,不能编译了

追答

私信 ,我帮你解决!

私信 ,我帮你解决!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-30
‘1’ 的ascii码 是49
‘2’的ascii吗是50
49+50=99追问

这个我知道,可我已经给x,y赋了值了,他为什么还会用ascii吗值进行计算?

追答

x,y接收的是键盘输入也就是键盘传过来的ascii码

追问

那应该怎么改才能得到我想要的结果

追答

Integer.valueof((char)x) 可以把ascii码转回来,
或者简单点, x-='0';也可以。

第2个回答  2013-11-30
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
y=sc.nextInt();