【问题标题】:Checking if outside file has a certain word, and if it doesn't then add it Java检查外部文件是否有某个单词,如果没有,则添加它 Java
【发布时间】: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


【解决方案1】:

问题在于这一行:

printWriter.println(word);

因为您总是打印相同的单词。尝试用你的变量“w”替换它,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 2016-05-08
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多