java中read方法问题

这是我写的一个java程序上面是运行结果也就是说我输入了123,然后回车,程序输出是150,不明白为什么,自己想着可能和unicode编码有关,初学不太懂,希望能帮忙解答... 这是我写的一个java程序

上面是运行结果
也就是说我输入了123,然后回车,程序输出是150,不明白为什么,自己想着可能和unicode编码有关,初学不太懂,希望能帮忙解答。
展开
 我来答
qq_include
推荐于2017-09-17 · TA获得超过381个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:92.2万
展开全部

一楼说的很对,根据ascii编码表:  1  对应 49;  2对应50; 3 对应 51。

主要是在System.out.println(a+b+c);这一句,程序会先将abc的的ascii值进行相加,毕竟算术符号的优先级比较高,然后再将其转换成字符串进行输出,于是就是System.out.println((a+b+c).toString());

结果就是150了。

如果需要使程序按照你想的那样运行,需要将字符转换成整数载运行。

或者你使用Scanner这个类,

Scanner scanner=new Scanner(System.in) ;
int a=scanner.nextInt();

这样就可以从输入中直接得到整数。

追问
怎么把字符转化成整数呢?直接减48么?
追答
是的!,你很聪明
匿名用户
2014-02-27
展开全部
你输入的123,是键盘输入字符, 在赋值是取的是该字符其对应的ascii编码.
根据ascii编码表: 1 对应 49; 2对应50; 3 对应 51;
所以a+b+c=49+50+51=150
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修罗☆风的记忆
2014-02-27
知道答主
回答量:8
采纳率:0%
帮助的人:7.7万
展开全部
你用来接收参数的是char型变量。而你输入的是数字123,那么会自动进行类型转换。也就是ascii编码。剩下的就是

根据ascii编码表: 1 对应 49; 2对应50; 3 对应 51;
或者说被转化过去
所以a+b+c=49+50+51=150

给你参考

https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/810a19d8bc3eb13548dbb0d4a71ea8d3fd1f4444.jpg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2017-09-16 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1735万
展开全部
read方法是读取字节流。
可以通过BufferedReader 流的形式进行流缓存,之后通过read方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.read())!= -1) // 判断是否为最后一个字节,是的话结束循环
{
System.out.println(str);//输出读到的内容
};
流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
备注:字节流读取过程中很容易出现乱码,建议可以用readLine方式进行每行的读取。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love爱有缘
2014-02-27 · TA获得超过1041个赞
知道小有建树答主
回答量:789
采纳率:0%
帮助的人:695万
展开全部
System.in.read()每次读取一个字符
所以 char a = '1' char b ='2' char c = '3'
两个字符 相加 结果为int
a+b+c = 49 + 50 + 51 = 150
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式