问题:我正在尝试从文件中获取字符串输入,然后将其存储在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();
}
}
答案 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。