【发布时间】:2021-02-20 20:02:16
【问题描述】:
我正在编写一个类,我必须将单词添加到外部文件中,前提是它们尚未出现在文件中。 这是我必须在文件中写出单词的方法的代码,但是当我运行它时,它进入了一个循环,并且只连续打印了一个单词:
public static void toDataFile(String word, String filename)
{
try {
File file = new File(filename);
Scanner sc2 = new Scanner(file);
while (sc2.hasNextLine())
{
String w = sc2.nextLine();
if(!(word.equals(w)))
{
FileWriter myWriter = new FileWriter(filename, true);
PrintWriter printWriter = new PrintWriter(myWriter);
printWriter.println(word);
printWriter.close();
}
}
}
catch(IOException e) {
e.printStackTrace();
}
}
这是我用来测试它的三个数据文件
文件 1: 我的测试文件一
文件 2: 我的测试文件二
文件 3: 我的测试文件三
这是该方法的结果: 测试 ...
它应该有: 测试 文件 三
编辑:我切换了变量 w 和 word,现在输出仍然是一个循环,现在执行它的“测试文件测试文件 ...”
【问题讨论】:
-
将您的
if (w != word)替换为if (!w.equals(word))。==(和!=)比较引用,而不是String的值 -
它仍然无法正常工作并给我一个单词的循环
-
请用文字分享您的文件
-
您正在打印
word,但应该打印w。您的逻辑也需要一些调整:您需要检查文件中的每个字之前打印一次。
标签: java string file io file-writing