使用'%20'替换空格的数组索引超出范围的异常

时间:2016-07-27 12:28:31

标签: java arrays indexoutofboundsexception

我的代码遇到问题。当我运行该程序时,它显示数组索引超出绑定异常。请指出代码中的错误。

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'替换字符串中的空格。

1 个答案:

答案 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)(或类似)

但我的建议是:使用字符串replacereplaceAll方法