看楼主的代码,是要实现取输入字符串的指定长度,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);
}
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);
}