java.lang.IndexOutOfBoundsException:索引:1,大小:数组中的1

时间:2015-03-14 13:01:48

标签: java arrays

你好@所有我有这个问题我有two arraylist ta,ta1 ta是一个1D arraylist在每个帧中包含许多字符串对象我只有一个对象我想要一个新的ArrayList ta1女巫从{{1}中的ta中选取两个或更多个对象我们得到的情况  1with2 2with3 3with4 .... 例如我有n=2 ta [aa,bb,cc,dd] ta1将是[aabb,bbcc,ccdd] 我试过这个

n=2;

但它给了我标题中的错误 坦克提前帮助

2 个答案:

答案 0 :(得分:2)

首先i<=ta.size()是错误的,因为ta的有效索引从0变为ta.size()-1

其次,在您的while循环中,您假设e+ita中的有效索引,这也是您不首先测试e+i<ta.size()时无法做出的假设。

首先你应该移动

int n=Integer.parseInt(tt.getText());

在for循环之前。

这样,改变

for (int i=0;i<=ta.size();i++)

for (int i=0;i<=ta.size()-n;i++)

将确保e+i<ta.size()

您还应该在正确的位置重置相关变量。我认为这应该有效:

     int n = Integer.parseInt(tt.getText());
     for (int i=0;i<=ta.size()-n;i++){
         int c = n;
         String m = "";
         int e = 0 ;
         while(c>0){
             String t=(ta.get(e+i));
             m=m+t;
             e++;
             c--; 
         }
         ta1.add(m);
     }
     t3.setText(ta1.toString());

答案 1 :(得分:1)

for (int i=0;i<=ta.size();i++){

ArrayList是一个基于0的索引集合。这意味着您从0转到size - 1。目前,您正从0转到size,这导致了IndexOutOfBoundsException