日期:2014-05-20  浏览次数:20808 次

求教一个“Java程序的异常修改方案”.
我在写一个聊天工具,下面的第218行是我的“报错的代码现场”:
    
    (图1)
        上文我在做一个“刷新本地聊天工具好友列表”的功能..
    其中的“ManageC_port_MDSpara0Channel_Thread.log0”变量,是弟我为了防止:
    “Socket通信的过程中”“出现一个通信报文”“不够整个写出的数据的承载量”的“分包”场景出现.
    从而进行了“记录上一个包的数据量”的通过上面的“ManageC_port_MDSpara0Channel_Thread.log0”变量来进行整个系统端点的“目前传输数据数量”的功能实现..
    现在,我碰到的问题是:
    数据的写出端总共传输了200条数据,全部采用“|”分隔符做标记分隔.
    但是,现在我的这个接收端报出了:
    “数组越界”的异常:
    
    (图2)
     我打出的结果是:
    
    (图3)
    接收端的数组“Recv.MyJButton0complicatingnum”的长度是200个,并且接收到的数据,也是“经过打印测试”“完全符合要求的个数的数据文本”..
    我得到的上述结论的证据如下:
    
    (图4)
    并且,上面的结论,我是进行了“word统计功能”的检查的:
    
    (图5)
    由上文中图的内容,可以得出:
    我的服务器接收到的数据,是“200条”的,并且,可以得出:
    以图1第217行进行“数据分隔”的代码结构所作用后的数组“bufferarray”的长度应该是:
    200个元素的长度的.
    但是,报出图2的错误,却是“Exception in thread "Thread-12" java.lang.ArrayIndexOutOfBoundsException: 200”的提示:
    这里的提示,说明:“最大索引值编号为199的Recv.MyJButton0complicatingnum”数组,他在面对“拥有最大索引值编号为201”的bufferarray数组的时候,未能够获得“第200个索引值编号的元素的内存地址的对应,所以报出了错误.
    但是,由图5中的内容可以知道:bufferarray数组的长度,应该最大就是200的长度的.
    bufferarray数组,他的最大索引值编号应该是199的.
    可是图2中的错误,却是报出了“数组越界”“越界数组索引值编号为200”的异常的..
    希望高手能够点拨:
    上面弟我的错误,原因在什么地方..?
    求高手帮忙解惑!!                                                                       

------解决方案--------------------
该回复于2013-12-16 09:06:47被管理员删除

------解决方案--------------------
加个断点调试下循环里的集合,是不是有201个
------解决方案--------------------
试着去http://segmentfault.com/ 提问下,那边比CSDN活跃多了
------解决方案--------------------
Recv.MyJButtionOcomplicatingum[j] = Integer.parseInt(bufferarray[j-ManageC_port_MDSpara0Channel_Thread.log0]):


出错那行改成这个