读书人

JAVA报错大家帮看看如何改

发布时间: 2012-09-05 15:19:35 作者: rapoo

JAVA报错,大家帮看看怎么改
public class Base643
{
public static final String BASE64CODE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
public static final String BASE64DECODE = "ABCDEGHIJKLMQRSTUVWXYZabcdefghijlmnopqrstwxyz0123456789.";
public static final int SPLIT_LINES_AT = 76;
public Base643()
{
}

public static String encodebook(String s, int i, int j)
{
String s1 = s;
if(s == null || s.length() < 10){ s1 = ""; }

StringBuffer stringbuffer = new StringBuffer();;

for(int l=0;l < s.length()/ 2;l++){
stringbuffer.append(s.substring(1 + l * 2, 2 + l * 2));
String s2 = stringbuffer.toString();
String s3 = s2.substring(0, i);
String s4;
if(i > 0)
s4 = (new StringBuilder(String.valueOf(s3))).append(".").append(s2.substring(i, s2.length() - j)).append(".").append(s2.substring(s2.length() - j)).toString();
else
s4 = (new StringBuilder(String.valueOf(s2.substring(i, s2.length() - j)))).append(".").append(s2.substring(s2.length() - j)).toString();
s1 = s4;
}
return s1;
}

public static void main(String[] args){ System.out.println("s1 = "+encodebook("kl4ofgsmgeje5gko99s1fc2ofm", 3, 3));}
}




报错结果为
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.substring(String.java:1935)
at com.Base643.encodebook(Base643.java:79)
at com.Base643.main(Base643.java:90)



还有:我不确定for循环那里的条件是for(int l=0;l < s.length()/ 2;l++)还是for(int l=0;l >= s.length()/ 2;l++)
,当改为 >= 时貌似没有进入for?直接输出的是kl4ofgsmgeje5gko99s1fc2ofm


[解决办法]
s.substring(1 + l * 2, 2 + l * 2)
里面的 2 + l * 2 > s.length,所以越界了

读书人网 >J2SE开发

热点推荐