java.lang.IndexOutOfBoundsException index:12 size 12 java

时间:2016-02-06 17:53:16

标签: java

问题:我正在尝试从文件中获取字符串输入,然后将其存储在arraylist中,然后尝试搜索特定的单词并删除它们,结果输出应该转到另一个文本文件...如果有的话这个代码工作正常列表中只有2个元素。但如果我把更多它显示java.lang.IndexOutOfBoundsException索引:12大小12。我在java中不是那么好,所以请帮助并抱歉任何愚蠢的错误...

 import java.io.BufferedReader;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class replace{

    public static void main(String[] args) throws Exception{
        String filen = "C:/Users/Damini/Desktop/hi.txt";
        FileReader file = new FileReader("C:/Users/Damini/Desktop/rules.txt");
        BufferedReader b = new BufferedReader(file);
        PrintWriter pw = new PrintWriter(filen);
        List<String> temps = new ArrayList<String>(10);

        String line = b.readLine();
        while(line!= null)
        {
            temps.add(line);
            line = b.readLine();

        }   
        int size = temps.size()-1;
        for(int i=0;i<=size;i++)
        {
            if(temps.get(i).equals("hello"))
            {
                temps.remove(i);

            }
        }
        pw.println(temps);
        pw.close();
        System.out.println("output:"+ temps);

        b.close();
    }
} 

2 个答案:

答案 0 :(得分:2)

尝试在不arrayList capacity的情况下编写10个临时代码:

 List<String> temps = new ArrayList<String>();
  • capacity是列表可以容纳的元素数量,而无需重新分配其内部结构。

答案 1 :(得分:0)

在java 数组 0基于。这意味着大小为12的数组的索引在0到11之间。

使用

修改代码
for (int i = 0; i <= size; i++)

因为大小是12而最后一个有效索引是11。