我正在编写一个输入单词列表和禁止单词列表的程序。然后,它会通过将该文件中的任何禁止词更改为星号来“审查”原始词汇列表。最后,它会将删失的单词列表写入输出文件。这就是我到目前为止所拥有的
import java.util.*;
import java.io.*;
public class Assignment_5 {
public static void main(String[] args) {
try{
ArrayList<String> bWords = new ArrayList<String>();
ArrayList<String> words = new ArrayList<String>();
Scanner sc = new Scanner(new FileInputStream ("banned.txt"));
PrintWriter pw = new PrintWriter ("output.txt");
while(sc.hasNext()){
bWords.add(sc.next());
}
sc = new Scanner(new FileInputStream("input.txt"));
while (sc.hasNext())
words.add(sc.next());
String replacement = "test";
for (int i = 0; i < words.size(); i++){
for (int j = 0; j < bWords.size(); j++){
if (words.get(i).compareTo(bWords.get(j)) == 0){
for (int k = 0; k < words.get(i).length(); k++)
replacement = "*";
words.set(i, replacement);
replacement = "";
}
}
for(i=0; i< words.size(); i++){
pw.println(words.get(i));
}
pw.close();
}
}
catch(Exception e){
System.out.println(e.toString());
}
编译正常并创建“output.txt”文件,但该文件为空。我似乎无法弄清楚为什么它不起作用。任何帮助都会很棒
UDPATE:它现在打印出来,因为我在PrintWriter前面添加了一个for循环(在代码中更新),但是现在它只打印出输入,而不是删除输入
答案 0 :(得分:1)
PrintWriter pw = new PrintWriter ("output.txt");
代码中的这一行是一次又一次地重写文件。 你能做的就是把它放在循环之外。 也不要忘记在循环结束后关闭流。
pw.close()