Заменить слова с ошибками из словаря

спросил: 14 ноября 2017 в 07:04 в: java

Я пытаюсь завершить этот алгоритм, который должен заменить слово с ошибкой в ​​текстовом файле на слово замены. Как видите, алгоритм описан в комментариях выше, и у меня есть первые две части, но я застрял в части for each line number where it appears:. У меня возникают проблемы, пытаясь выяснить, как настроить цикл. Если бы кто-нибудь мог помочь мне в направлении завершения этого метода, я был бы очень признателен!

private void replace(String misspelled, String replacement){
    //TODO: Algorithm:
    //If wrongWords contains the misspelled word:
    //   get ALL the lineNumbers on where the misspelled word appears
    //   for each line number where it appears:
    //        in fileLines[line] replace misspelled with replacement
    //        (Hint: use one of the available methods in the String class to do the replacement)
    if(wrongWords.containsKey(misspelled))
       wrongWords.get(misspelled);}

Другой известный код, который может оказаться полезным, включает в себя:

private void correctionMode(){   
  for(String line: fileLine)
    for(String w: line.split("//s"))
       if(wrongWords.containsKey(w)){
           System.out.println(wrongWords.get(w));
           System.out.println("replace all? (y or n): ");
           String r = scan.nextLine();
           if(r.equals("y")){
               System.out.println("Enter replacement: ");
               String r2 = scan.nextLine();
               replace(w, r2);
           }
           wrongWords.remove(w);
       }                        
}

Этот метод запрашивает у пользователя исправления, а затем переходит к методу замены, с которым у меня возникают проблемы, если пользователь хочет внести изменение.

private Scanner scan; // a Scanner to read user's input
private HashSet<String> dictionary;
private HashMap<String, ArrayList<Integer>> wrongWords;
private ArrayList<String> fileLine;\\constructor
public SpellChecker(){
  scan = new Scanner(System.in);
  dictionary = new HashSet<String>();
  wrongWords = new HashMap<String, ArrayList<Integer>>(); //array is line numbers where misspelled word appears
  fileLine = new ArrayList<String>(); //each line is as separate element in the arraylist
}

Переменные класса и конструктор также могут быть полезны.


0 ответов