使用HashTable检查Word的拼写

时间:2017-11-16 15:18:53

标签: java string hashtable collision

我有一个插入HashTable的单词数组。 然后是一个函数,用于检查用户输入的单词是否拼写正确。 我的问题是拼写检查功能只有在我启动单词时才有效,但是如果用户输入单词则不行(即使拼写正确)。 程序的设置方式不会发生冲突,但如果您对如何处理它们有任何建议,请告诉我。

public class hashExample {

    String[] myArray = new String[31];

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String[] words = { "Achieve", "Across", "Apparently", "Admin", 
                "Amazing", "Argument", "Assasination", "Accommodate" };

        hashExample theFunc = new hashExample();

        theFunc.hashFunction(words, theFunc.myArray);

        System.out.println("Enter a word to check for spelling...");

        String Word = input.nextLine();
        //Works only if I initiate Word.
        //String Word = "Accommodate";

        theFunc.findKey(Word);
    }

    public void hashFunction(String[] stringsForArray, String[] myArray) {

        for (int n = 0; n < stringsForArray.length; n++) {

            String newElementVal = stringsForArray[n];

            // Using ASCII values of the first four letters of each word.
            int arrayIndex = ((int)newElementVal.charAt(0) + (int)newElementVal.charAt(1)
            + (int)newElementVal.charAt(2)+ (int)newElementVal.charAt(3)) % 31;

            myArray[arrayIndex] = newElementVal;
        }
    }

    public void findKey(String key) {

        int indexHash = ((int)key.charAt(0) + (int)key.charAt(1) + (int)key.charAt(2)
        + (int)key.charAt(3)) % 31;

        String wordSearch = myArray[indexHash];

        if (key == wordSearch){
                System.out.println("Word is spelled correctly!");
            } else{
                System.out.println("Sorry word is not spelled correctly");
            }
    }
}

1 个答案:

答案 0 :(得分:1)

键== wordSearch 更改为 key.equals(wordSearch),然后它将开始使用输入。

因为字符串是对象,并且如果要比较两个字符串,请使用.equals方法来比较它们而不是==。

if (key.equals(wordSearch)) {
    System.out.println("Word is spelled correctly!");
} else {
    System.out.println("Sorry word is not spelled correctly");
}