求教一个“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]):
出错那行改成这个