我的拼写检查器有办法正常工作吗

时间:2019-02-08 01:06:22

标签: java spell-checking

问题是我要制作的拼写检查器。我有一个词典文件,其中包含大量单词,可以与用户输入进行比较,以便可以检测到任何可能的拼写错误。我的问题是,无论您键入什么内容,它总是会说拼写不正确。是否有任何解决方案或更好的方法来检测用户输入的销售错误。

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;


public class SpellChecker2 {

public static void main(String[] args) throws FileNotFoundException
{

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a String"); 
    String userWord = input.nextLine();

    final String theDictionary = "dictionary.txt";

    String[] words = dictionary(theDictionary);
    boolean correctSpelling = checking(words, userWord);

if (!correctSpelling)
    {
    System.out.println("Incorrect spelling");
    }
else 
    {
    System.out.println("The spelling is correct");
    }

}

public static String[] dictionary(String filename) throws FileNotFoundException
{
    final String fileName = "dictionary.txt";

    Scanner dictionary = new Scanner(new File(fileName));
    int dictionaryLength =0;
    while (dictionary.hasNext())
    {
        ++dictionaryLength;
        dictionary.nextLine();
    }


    String [] theWords = new String[dictionaryLength];
        for ( int x = 0; x < theWords.length ; x++)


        dictionary.close();
    return theWords;
}


public static boolean checking(String[] dictionary, String userWord)
{
boolean correctSpelling = false;

    for ( int i =0; i < dictionary.length; i++)
    {
        if (userWord.equals(dictionary[i]))
        {
            correctSpelling = true;
        }
        else 
            correctSpelling = false;
    }
    return correctSpelling;
}


}

我得到的结果是:

           Please enter a String
           hello
           Incorrect spelling

如您所见,即使我的拼写正确,它也会给出一个错误,表明拼写不正确。任何帮助都将非常有用,谢谢您。

1 个答案:

答案 0 :(得分:1)

是的。从checking的{​​{1}}返回。就像您现在拥有的那样,只有在最后一个单词匹配的情况下它才能为真。喜欢,

true

此外,您需要通过向数组中添加单词来填充public static boolean checking(String[] dictionary, String userWord) { for ( int i =0; i < dictionary.length; i++) { if (userWord.equals(dictionary[i])) { return true; } } return false; } 。 而且,相对于显式dictionary调用,我更喜欢try-with-resources。像

close()