日期:2014-05-20  浏览次数:20774 次

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,所以越界了