前辈们,我碰到一个数组越界的问题,也定位到哪一句了,可是各种改都不对。请前辈们指点一下,大家遇到数组越界问题时都是如何解决的呢?我的APP安装在小米PAD3上,第一次打开时是崩溃的,一闪而退,然后出现这个错误。第二次打开就没有问题了,求解。另外,我用魅族手机就没事,一次就能打开,也不报错,请前辈指点。
logcat如下:
07-23 09:05:05.936: E/AndroidRuntime(14208): FATAL EXCEPTION: Thread-7
07-23 09:05:05.936: E/AndroidRuntime(14208): Process: com.Frank.wifirobot, PID: 14208
07-23 09:05:05.936: E/AndroidRuntime(14208): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
07-23 09:05:05.936: E/AndroidRuntime(14208): at com.Frank.wifirobot.WifiRobot_right$7.run(WifiRobot_right.java:593)
07-23 09:05:05.936: E/AndroidRuntime(14208): at java.lang.Thread.run(Thread.java:761)
部分代码如下:
我贴一些代码出来,其中错误定位在if (msg2ch[0] == ':') 上。
while(true){
//char msg2ch[]=new char[100];
char msg2ch[];
try {
PubUtil.msg2 = PubUtil.br.readLine();
if ( ( PubUtil.msg2 ) != null ) {
msg2ch = PubUtil.msg2.toCharArray();//将字符串对象中的字符转换为一个字符数组
//if (msg2ch.length!=0) {
if (msg2ch[0] == ':') {
switch (msg2ch[1]) {
case 'Z': {
PubUtil.dis[0] = msg2ch[2]; //距离百位
Log.e("dis[0]:", "" + msg2ch[2]);
PubUtil.dis[1] = msg2ch[3]; //距离十位
Log.e("dis[1]:", "" + msg2ch[3]);
PubUtil.dis[2] = msg2ch[4]; //距离个位
Log.e("dis[2]:", "" + msg2ch[4]);
break;
}
case 'X': {
PubUtil.temp[0] = msg2ch[2]; //水温百位
Log.e("temp[0]:", "" + msg2ch[2]);
PubUtil.temp[1] = msg2ch[3]; //水温十位
Log.e("temp[1]:", "" + msg2ch[3]);
PubUtil.temp[2] = msg2ch[4]; //水温个位
Log.e("temp[2]:", "" + msg2ch[4]);
break;
}
case 'Y': {
PubUtil.power[0] = msg2ch[2]; //功率百位
Log.e("power[0]:", "" + msg2ch[2]);
PubUtil.power[1] = msg2ch[3]; //功率十位
Log.e("power[1]:", "" + msg2ch[3]);
PubUtil.power[2] = msg2ch[4]; //功率个位
Log.e("power[2]:", "" + msg2ch[4]);
break;