我写了一个定期在字符串数组中插入字符的方法。 我在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
你有什么建议吗?
答案 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
的值(使用if
或else
)。由于i
没有增加,因此for
循环将以无限循环运行。一旦k
的值大于withCommosSize
,您就会获得ArrayIndexOutOfBoundsException
。
将i=i++
更改为i++
,它会起作用。