为了账号安全,请及时绑定邮箱和手机立即绑定

从文本文件创建的字典 - contains() 总是返回 false

从文本文件创建的字典 - contains() 总是返回 false

蓝山帝景 2021-11-03 09:57:51
我目前正忙于一项小型大学作业,并且在使用我实现的字典类的 contains() 方法时遇到了一些问题 - 该方法总是返回 false。这个类看起来像这样:public class LocalDictionary {    private ArrayList<String> wordsSet;    public LocalDictionary() throws IOException {        String wordListContents = new String(Files.readAllBytes(Paths.get("words.txt")));        wordsSet = new ArrayList<>();        String[] words = wordListContents.split("\n");        for (int i = 0; i < words.length; i++) {            wordsSet.add(words[i].toLowerCase());        }    }    public boolean contains(String word) {        return wordsSet.contains(word.toLowerCase());    }}字典从中获取单词的“words.txt”文件可在https://raw.githubusercontent.com/dwyl/english-words/master/words_alpha.txt获得,但这里是它的外观片段:zinkedzinkenitezinkyzinkiferouszinkifyzinkifiedzinkifieszinkifyingzinniazinniaszinnwalditezinoberzinsangzinzarzinziberaceae我已经确保“words.txt”中的单词包含在“wordsSet”中,但无法弄清楚为什么 contains 方法对于似乎在 ArrayList 中的单词返回 false。非常感谢任何帮助。
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

尝试BufferedReader,我尝试并为我工作(我删除了一些无用的行)。在您的使用中,您从文件中读取所有字节,会有额外的字节。


public class LocalDictionary {

    private ArrayList<String> wordsSet = new ArrayList<>();


    public LocalDictionary() throws Exception {


        //dont forget to absolute path to here. click righ click to file and copy path

        File file = new File("C:\\Users\\higuys\\IdeaProjects\\try\\src\\words.txt");

        BufferedReader br = new BufferedReader(new FileReader(file));


        String line;

        while ((line = br.readLine()) != null)

            //trim and tolowercase and add to list.

            wordsSet.add(line.trim().toLowerCase());


    }


    public boolean contains(String word) {

        return wordsSet.contains(word.toLowerCase());

    }

}


查看完整回答
反对 回复 2021-11-03
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

尝试BufferedReader,我尝试并为我工作(我删除了一些无用的行)。在您的使用中,您从文件中读取所有字节,会有额外的字节。


public class LocalDictionary {

    private ArrayList<String> wordsSet = new ArrayList<>();


    public LocalDictionary() throws Exception {


        //dont forget to absolute path to here. click righ click to file and copy path

        File file = new File("C:\\Users\\higuys\\IdeaProjects\\try\\src\\words.txt");

        BufferedReader br = new BufferedReader(new FileReader(file));


        String line;

        while ((line = br.readLine()) != null)

            //trim and tolowercase and add to list.

            wordsSet.add(line.trim().toLowerCase());


    }


    public boolean contains(String word) {

        return wordsSet.contains(word.toLowerCase());

    }

}


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信