Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
话题被移动
该话题已被移动 - littledeer1974 , 2004-12-05 22:06
如果您尚不清楚该话题被移动的原因,请参考论坛规则以及本版公告或者联系本版版主。
作者 Re:关于try--catch--finally和java标准输入流(急~~~) [Re:rahoo]
michaelyung





发贴: 13
积分: 0
于 2004-12-20 15:10 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list

System.in.read(buffer);
String a=new String(buffer).trim();

这两个语句执行一次没问题。
但每次执行完,buffer中存储的是字节数组。原有的数据还存在。
举个例子来说:

第一次输入1234567
buffer中得到的就是{49,50,51,52,53,54,55,13,10,0,……}
当调用.trim()只是截取到{13,10}即得到前面的7个字节。

若第二次调用时,此时buffer字节数组中的数据依然存在。
所以第二次如果输入的数值如果大于前一次的数值,
那么buffer原有的才会被覆盖,就不会有问题。
否则

如果第二次输入一个3
则buffer中得到的就是
{51,13,10,52,53,54,55,13,10,0……}
所以第二次的数据和第一次的部分数据都混在一起存在buffer中了。

所以才会出现你所说的异常。
将程序中读取数据的两个语句换成下面的吧:

BufferedReader is=
new BufferedReader(new InputStreamReader(System.in));
String text = is.readLine();

这样就没问题了。我已经调试过了。




Eclipse使用技巧

话题树型展开
人气 标题 作者 字数 发贴时间
9883 关于try--catch--finally和java标准输入流(急~~~) rahoo 1025 2004-12-04 15:15
7894 Re:关于try--catch--finally和java标准输入流(急~~~) rahoo 2195 2004-12-04 15:21
8081 Re:关于try--catch--finally和java标准输入流(急~~~) rahoo 190 2004-12-04 15:25
7997 Re:关于try--catch--finally和java标准输入流(急~~~) rahoo 458 2004-12-04 15:28
7977 Re:关于try--catch--finally和java标准输入流(急~~~) rahoo 118 2004-12-04 15:31
8351 Re:关于try--catch--finally和java标准输入流(急~~~) michaelyung 645 2004-12-20 15:10

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923