java中分割字符串的解读问题

2024-11-22 07:46:15
推荐回答(2个)
回答(1):

看楼主的代码,是要实现取输入字符串的指定长度,if后面的就是判定,当达到括号内的条件时就执行大括号里的代码,如果不符合,就执行else大括号里 的,但是当len = byteNum时bt[len]<0这里数组就越界了,应该是bt[len-1]<0,再说,怎么能拿最后一位与0比较大小,因为你无法保证你输入的字符串最后一位就是数字,不晓得这一个if-else有啥用,楼主参考下
public static void splitString(String str,int len) {
byte[] bt = str.getBytes();
int byteNum = bt.length;
if(len > byteNum) {
len = byteNum;
}
str=new String(bt,0,len); //把数组bt的0到len-1位赋给str
System.out.println(str);
}

回答(2):

new String(bt,0,len);

bete数组bt从下标为0开始前进len个下标的那一段数组变为字符串,所以

byteNum = bt.length; 
if(len > byteNum)

    len = byteNum; 
}

并不能防止传入的len超出bt数组长度bt.length后不报错,应该改为byteNum = bt.length-1; 

另外下面判断就是个无用代码。

if(bt[len]<0)

str=new String(bt,0,--len); 
System.out.println(str); 
}

修改后的代码如下:

public static void splitString(String str, int len) {
int byteNum = 0;
byte[] bt = str.getBytes(); 
byteNum = bt.length - 1;
if (len > byteNum) {
len = byteNum;
}

str = new String(bt, 0, len);
System.out.println(str);
}