Java 如何将ArrayList中的单词与文件中的单词进行比较?

Java 如何将ArrayList中的单词与文件中的单词进行比较?,java,arraylist,Java,Arraylist,我正在创建的程序是一个“拼写检查”类的程序,但已经明确告知要将字典中的单词放在ArrayList中,并且我们正在比较的文件是一个.txt文件 就我个人而言,我不知道如何比较它们 这就是我到目前为止得到的结果(它没有比较循环,因为它们都没有接近工作状态) packagetestdelimeter; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.util.ArrayList; 导入java.util.Scanner; 公开课考试{ 公

我正在创建的程序是一个“拼写检查”类的程序,但已经明确告知要将字典中的单词放在
ArrayList
中,并且我们正在比较的文件是一个.txt文件

就我个人而言,我不知道如何比较它们

这就是我到目前为止得到的结果(它没有比较循环,因为它们都没有接近工作状态)

packagetestdelimeter;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args)引发FileNotFoundException{
ArrayList dict=新的ArrayList();
文件填充=新文件(“C:\\Users\\Ceri\\workspace1\\testDelimeter\\src\\testDelimeter\\”+“dict”+“.txt”);
扫描仪输入=新扫描仪(填充);
File text=新文件(“C:\\Users\\Ceri\\workspace1\\testDelimeter\\src\\testDelimeter\\\”+“text”+“.txt”);
扫描仪s=新扫描仪(文本);
while(在.hasNext()中){
dict.add(in.next());
}
}
}

指导比任何事情都要精彩

如果我没弄错的话,这应该行得通:

import java.util.ArrayList;
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        ArrayList<String> dictionary = createDictionaryFromFile("C:\\path\\to\\dictionary\\dictionary.txt");

        Scanner fileToCheck = new Scanner("C:\\path\\to\\file");
        while (fileToCheck.hasNext()) {
            String wordToCheck = fileToCheck.next();
            if (!dictionary.contains(wordToCheck.toLowerCase())) {
                System.out.println("Misspelled word: " + wordToCheck);
            }
        }
    }

    private static ArrayList<String> createDictionaryFromFile(String path) {
        Scanner scanner = new Scanner(path);
        ArrayList<String> dictionary = new ArrayList<>();
        while (scanner.hasNext()) {
            dictionary.add(scanner.next().toLowerCase());
        }
        return dictionary;
    }
}
import java.util.ArrayList;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
ArrayList dictionary=createDictionaryFromFile(“C:\\path\\to\\dictionary\\dictionary.txt”);
Scanner fileToCheck=新扫描仪(“C:\\path\\to\\file”);
while(fileToCheck.hasNext()){
字符串wordToCheck=fileToCheck.next();
如果(!dictionary.contains(wordToCheck.toLowerCase())){
System.out.println(“拼写错误的单词:“+wordToCheck”);
}
}
}
私有静态ArrayList createDictionaryFromFile(字符串路径){
扫描仪=新扫描仪(路径);
ArrayList字典=新的ArrayList();
while(scanner.hasNext()){
dictionary.add(scanner.next().toLowerCase());
}
返回字典;
}
}

另外,ArrayList的contains操作不是很有效。如果将ArrayList更改为“设置”,效率会更高。

从文本中逐个阅读单词,然后在ArrayList上循环并与每个内容单词进行比较,怎么样?根据拼写,Fame和Fame都是正确的。ArrayList.contains()将返回false,尽管..是的,您是对的。我添加了修复。虽然我认为问题是关于如何做的原则。对于正确的拼写检查,有许多细节需要改进。
import java.util.ArrayList;
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        ArrayList<String> dictionary = createDictionaryFromFile("C:\\path\\to\\dictionary\\dictionary.txt");

        Scanner fileToCheck = new Scanner("C:\\path\\to\\file");
        while (fileToCheck.hasNext()) {
            String wordToCheck = fileToCheck.next();
            if (!dictionary.contains(wordToCheck.toLowerCase())) {
                System.out.println("Misspelled word: " + wordToCheck);
            }
        }
    }

    private static ArrayList<String> createDictionaryFromFile(String path) {
        Scanner scanner = new Scanner(path);
        ArrayList<String> dictionary = new ArrayList<>();
        while (scanner.hasNext()) {
            dictionary.add(scanner.next().toLowerCase());
        }
        return dictionary;
    }
}