我的代码遇到问题。当我运行该程序时,它显示数组索引超出绑定异常。请指出代码中的错误。
package replacespace;
import java.util.Scanner;
public class ReplaceSpace {
/*public int calLength(char par1[]){
int count=0;
for(char c:par1){
count++;
}
return(count);
}*/
/**
*
* @param args
*/
public void replaceSpace(char str[], int length){
char[] newArray= new char[length+1];
newArray[length+1]='\0';
int position=0;
for(int i=0;i<length;i++){
if(str[i]==' '){
length=length+2;
newArray[position]='%';
newArray[position+1]='2';
newArray[position+2]='0';
position=position+3;
}
else{
newArray[position]=str[i];
position++;
}
}
String s=new String(newArray);
System.out.println(s);
}
public static void main(String[] args) {
ReplaceSpace rs= new ReplaceSpace();
String s1,sCopy;
int length;
Scanner scan= new Scanner(System.in);
System.out.println("Please enter any string");
s1=scan.nextLine();
length=s1.length();
char stringArr[]=new char[length];
stringArr =s1.toCharArray();
//length=rs.calLength(stringArr);
rs.replaceSpace(stringArr,stringArr.length);
}
}
此代码假设用'%20'替换字符串中的空格。
答案 0 :(得分:2)
for(int j=var1;j<=length;j++){
stringArr1[j]= '%';
stringArr1[j+1]='2';
stringArr1[i+2]='0';
stringArr1[j+3]=array[i+1];
}
此代码一直运行,直到j等于length。
你之前不能拥有该[j+3]
索引(或者一个(s))。
将您的j<=length
更改为j<=(length-3)
(或类似)
但我的建议是:使用字符串replace
或replaceAll
方法