我用jsp写了个函数,编译通过,运行提示 String index out of range: 8(20分)

  • 主题发起人 主题发起人 huangjiahan
  • 开始时间 开始时间
H

huangjiahan

Unregistered / Unconfirmed
GUEST, unregistred user!
我用jsp写了个函数,编译通过,运行提示 String index out of range: 8
<%!
String jm(boolean ismm,boolean isjm,String str0,String str5)
{
String str1,str2,str3,str4;
int i,j;
if (ismm==true)//密码运算
{
str2 ="kdsjfl;eaf";
str3 = str5+str5;
str4 = "";
if (isjm==true)//加密
{
str1=str0.trim()+" ";//后面加10个空格
str1=str1.substring(1,10);
//str1 = left(trim(str0)+space(10),10);
//密码首尾不能为空格
i = 0;
while (i<=9)
{
j=(int)(str1.charAt(i))+(int)(str2.charAt(i))+(int)(str3.charAt(i));
j=j%256;
str4=str4+(char)j;

//str4 = str4 + (char)(mod(asc(mid(str1,i,1))+asc(mid(str2,i,1))+asc(mid(str3,i,1)),256));
i++;
}
}
return str4;
}
%>
 
str1=str1.substring(1,10);
应该改为
str1=str1.substring(0,10);
substring函数是从0开始计算的。实际取得的是0到9共10个字符。
 
还是不行啊
 
while (i<=9) 当i<=8时都可以。不能大于8,我要循环10次啊。
到底是什么原因?
 
String index out of range: 8
 
关键已经找到了,那个长度有没有十次可以运行
 
看这句:
j=(int)(str1.charAt(i))+(int)(str2.charAt(i))+(int)(str3.charAt(i));
str3.charAt(i)会出异常,因为你的str3=str5+str5,如果str5少于5个字符就会有异常呀。。。。
 
后退
顶部