2015-02-23 6 views
0

Цель этой программы - импортировать 2 файла. Файл открытого текста и текстовый файл словаря.Сравнение содержимого 2 списков массивов

Программа должна искать файлы и сравнивать слова и распечатывать любые варианты, которые не совпадают с ошибками.

Я использовал сканер для чтения и поместил каждую строку в массив (словарь указан в строках), но я не могу понять, как сравнивать два списка массивов друг с другом.

Любая помощь приветствуется.

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

public class Dictionary { 
public static void main(String[] args) throws FileNotFoundException { 
    ArrayList <String> words = new ArrayList<String>(); 
    ArrayList <String> dict = new ArrayList<String>(); 

    File inputFile = new File(args [0]); 
    File inputDictionary = new File(args [1]); 

    Scanner in = new Scanner(inputFile); 
    Scanner inDict = new Scanner(inputDictionary); 

    while(in.hasNext()) { 
     String word = in.next(); 
     words.add(word);  
    } 

    while (inDict.hasNextLine()) { 
     String correctWord = inDict.nextLine(); 
     dict.add(correctWord); 
    } 
} 
} 
+0

Используйте цикл и 'dict.contains' – immibis

+0

Что об использовании Apache Commons - CollectionUtils и делать:' ArrayList mispelledWords = CollectionUtils.disjunction (слова, ДИКТ) '? – Ascalonian

ответ

0

Попробуйте этот.

for(String word : words){ //loop for words 
    if(!dict.contains(word)) //check if dict contain word 
    System.out.println(word); //print it if dict doesnt have word 
} 
0

Вам нужно циклически перебирать каждое слово в словах Arraylist и посмотреть, содержится ли он в файле arraylist.

boolean[] misspelled = new boolean[words.size()]; 
int i = 0; 
for (String word : words) { 
    misspelled[i] = !dict.contains(word); 
    i++; 
} 

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

0

Вам необходимо перебрать два ArrayList и сравнить их.

for(int i = 0; i<words.size();i++){ 
     for(int j = 0; j<dict.size(); j++){ 
      if(words.get(i).equals(dict.get(j))){ 
       // they are equivalent strings 
      }else{ 
       // not equivalent 
      } 
     } 
    } 
+0

Как насчет использования улучшенных for-loops? – Ascalonian

+0

@ Аскалон, который также работает. Я предпочитаю традиционные для циклов, потому что дает вам больше контроля, позволяя вам получить/изменить переменную итерации. – Dando18

Смежные вопросы