定期在数组字符串中插入一个字符

时间:2015-06-26 06:51:12

标签: java arrays string

我写了一个定期在字符串数组中插入字符的方法。 我在android studio中写了它,应用程序停止运行。 我的输入是一个字符串数组:(输入部分仅用于测试,我将使其动态化)

    String[] myPoints= new String[4];
    myPoints[0]="22";
    myPoints[1]="45";
    myPoints[2]="34";
    myPoints[3]="60";

现在我需要插入","在每两个数组记录之间。所以我写了这个:

public static String[] insertPeriodically(String[] points){


    int pointsSize = points.length;// length of points array
    int withCommosSize=pointsSize+(pointsSize/2)-1;//length of new array
    String[] withCommos= new String[withCommosSize];
    int insert=0;
    int k=0;
    for (int i=0; i<pointsSize; i=i++){
        withCommos[k]=points[i];
        insert=insert+1;
        if(insert==2){
            withCommos[k+1]=",";
            k++;
            insert=0;
        }else
        k++;
    }
    return withCommos;
}

控制台显示此java错误:  java.lang.RuntimeException:无法启动活动ComponentInfojava.lang.ArrayIndexOutOfBoundsException:length = 5;指数= 5

你有什么建议吗?

3 个答案:

答案 0 :(得分:1)

你的for循环中有一个拼写错误(i=i++),你应该总是至少增加一次k。这有效:

public static String[] insertPeriodically(String[] points){
    int pointsSize = points.length;// length of points array
    int withCommosSize=pointsSize+(pointsSize/2)-1;//length of new array
    String[] withCommos= new String[withCommosSize];
    int insert=0;
    int k=0;
    for (int i=0; i<pointsSize; i++){
        withCommos[k]=points[i];
        insert=insert+1;
        if(insert==2 && k<withCommosSize-1){
            withCommos[k+1]=",";
            k++;
            insert=0;
        }
        k++;
    }
    return withCommos;
}

答案 1 :(得分:0)

可能是这个怎么样

List<String> list = new ArrayList<String>();
for(int i=0;i<points.length;i++)
            {
                list.add(points[i]);
                if(i==(points.length-1)) break;
                list.add(",");
            }

答案 2 :(得分:0)

Unable to start activity ComponentInfojava.lang.ArrayIndexOutOfBoundsException:

由于i=i++,您收到此异常。请检查此link

此声明不会增加i的值,但每次都会增加k的值(使用ifelse)。由于i没有增加,因此for循环将以无限循环运行。一旦k的值大于withCommosSize,您就会获得ArrayIndexOutOfBoundsException

i=i++更改为i++,它会起作用。