Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除以前的字符串项_Java_Search_Arraylist - Fatal编程技术网

Java 删除以前的字符串项

Java 删除以前的字符串项,java,search,arraylist,Java,Search,Arraylist,不太清楚这个问题怎么表达。 我正在写一个拼写检查程序,从文本文件中读取单词。然后将这些单词添加到类型为的ArrayList中: ArrayList<String> dictionaryList = new ArrayList<String>(); 由于这是一个无休止的循环,程序要求我输入另一个单词。现在,如果我键入“banaan”(字典中的banana),程序将生成以下输出: Enter search term: coffei Suggestion for simil

不太清楚这个问题怎么表达。 我正在写一个拼写检查程序,从文本文件中读取单词。然后将这些单词添加到类型为的ArrayList中:

ArrayList<String> dictionaryList = new ArrayList<String>();
由于这是一个无休止的循环,程序要求我输入另一个单词。现在,如果我键入“banaan”(字典中的banana),程序将生成以下输出:

Enter search term: 
coffei
Suggestion for similar words: 
-coffee
Enter search term: 
banaan
Suggestion for similar words: 
-coffee
-banana
因此,它“记住”我搜索的coffei,并在“香蕉”之外提供“coffee”作为建议词。我一直在想为什么会发生这种情况,但找不到我的错误。任何帮助都将不胜感激。代码如下:

代码

//GETTING SIMILAR WORD ARRAYLIST
public ArrayList<ArrayList<String>> getSimilarWords(String searchWord) {
    this.searchWord = searchWord;
    char[] wordAsCharacterArray = searchWord.toCharArray(); //Convert search String to a character array

    //Call helper methods to add the suggested similar words to the similarWordArrayList
    similarWordArrayList.add(charSwap(wordAsCharacterArray));   //Add swapped character suggestions
    similarWordArrayList.add(charRemove(wordAsCharacterArray)); //Add removed character suggestions
    similarWordArrayList.add(charAdd(wordAsCharacterArray)); //Add removed character suggestions
    similarWordArrayList.add(charReplace(wordAsCharacterArray)); //Add removed character suggestions

    return similarWordArrayList;
}

非常感谢任何关于如何修复此问题的帮助,以便程序仅根据最后一个搜索词打印出建议的单词(并且不记得以前建议的单词)

我认为,首先要做的是在添加单词之前清除arraylist

//GETTING SIMILAR WORD ARRAYLIST
public ArrayList<ArrayList<String>> getSimilarWords(String searchWord) {
    this.searchWord = searchWord;
    char[] wordAsCharacterArray = searchWord.toCharArray(); //Convert search String to a character array

    //Clear the list before adding words
    similarWordArrayList.clear();

    //Call helper methods to add the suggested similar words to the similarWordArrayList
    similarWordArrayList.add(charSwap(wordAsCharacterArray));   //Add swapped character suggestions
    similarWordArrayList.add(charRemove(wordAsCharacterArray)); //Add removed character suggestions
    similarWordArrayList.add(charAdd(wordAsCharacterArray)); //Add removed character suggestions
    similarWordArrayList.add(charReplace(wordAsCharacterArray)); //Add removed character suggestions

    return similarWordArrayList;
}
//获取相似的单词数组列表
公共ArrayList getSimilarWords(字符串搜索字){
this.searchWord=searchWord;
char[]wordsCharacterArray=searchWord.ToCharray();//将搜索字符串转换为字符数组
//在添加单词之前清除列表
similarWordArrayList.clear();
//调用helper方法将建议的相似单词添加到similarWordArrayList
similarWordArrayList.add(charSwap(wordAsCharacterArray));//添加交换的字符建议
similarWordArrayList.add(charRemove(wordAsCharacterArray));//添加删除的字符建议
similarWordArrayList.add(charAdd(wordAsCharacterArray));//添加删除的字符建议
similarWordArrayList.add(charReplace(wordAsCharacterArray));//添加删除的字符建议
返回similarWordArrayList;
}

谢谢您的建议。但是,在键入第二个搜索词时,它仍然会给我以前建议的单词:但是@DirkNm建议的方法就是这样做的。也许这个地方会有所不同。但是你必须在形成这些单词之前清除列表。非常感谢你们!它帮助我意识到我必须清除ArrayList allSimilarWords(在suggestWords()方法中)。你能告诉我哪个变量给出最终输出吗?
//Method to generate and suggest similar words
private void suggestWords(ArrayList<ArrayList<String>> similarWords) {
    allSimilarWords = convertSingleList(similarWords);
    String currWord = "";

    outer: for(int i = 0; i < allSimilarWords.size(); i++) { //Iterate through the list of similar words
        currWord = allSimilarWords.get(i); //Set current similar word to a String variable
        for(int j = 0; j < i; j++) {
            if(currWord.equalsIgnoreCase(allSimilarWords.get(j))) {
                continue outer;
            }
        }
        if(myDictionaryList.contains(currWord)) {
            System.out.println("-" + currWord);
        }

    }
}
public void findString(String word) {
    searchTerm = word;
    if(myDictionaryList.contains(word)) {    //If found
        System.out.println("Found word!");  //Notify
    }
    else {
        //Find all similar words
        System.out.println("Suggestions for similar words: ");
        similarWords = handler.getSimilarWords(searchTerm);
        suggestWords(similarWords);
    }
}
//GETTING SIMILAR WORD ARRAYLIST
public ArrayList<ArrayList<String>> getSimilarWords(String searchWord) {
    this.searchWord = searchWord;
    char[] wordAsCharacterArray = searchWord.toCharArray(); //Convert search String to a character array

    //Clear the list before adding words
    similarWordArrayList.clear();

    //Call helper methods to add the suggested similar words to the similarWordArrayList
    similarWordArrayList.add(charSwap(wordAsCharacterArray));   //Add swapped character suggestions
    similarWordArrayList.add(charRemove(wordAsCharacterArray)); //Add removed character suggestions
    similarWordArrayList.add(charAdd(wordAsCharacterArray)); //Add removed character suggestions
    similarWordArrayList.add(charReplace(wordAsCharacterArray)); //Add removed character suggestions

    return similarWordArrayList;
}