Чтение из списка массивов и сравнение с входной строкой

1

В основном меня попросили создать игру с маленькими буквами, в которой пользователь выбирает некоторые гласные и согласные, и они добавляются в список массивов, как только это произошло, мы должны распечатать содержимое списка массивов, например, это может выглядеть это [T, S, I, L, Y, A, R, R, A], а затем мы побуждаем игрока вводить слова, которые, по их мнению, они могут сделать из данного списка символов. Я ищу несколько указателей, чтобы убедиться, что пользователь может использовать только символы, а также как сравнить их ответ со словарным файлом. Единственный код, который я до сих пор читал в моем словаре. Любая помощь будет принята с благодарностью.

try {

    BufferedReader reader = new BufferedReader(new FileReader("dictionary.txt"));
    String line = reader.readLine();
    List<String> words = new ArrayList<String>();
    while (line != null) {
        String[] wordsLine = line.split(" ");
        for (String word : wordsLine) {
            words.add(word);
        }
        line = reader.readLine();
    }
    System.out.println("Here is your board again: " + genString + "\n");
    System.out.println("Please enter your answer!\n");
} catch (Exception e) {
    System.out.println(e);
}

genString - это мой, каков будет список символов, и мне еще нужно поместить сканер для ввода пользователя.

Теги:
arrays
list
character
compare

1 ответ

0

Основная идея заключается в том, чтобы вводить символы из пользовательского ввода в какую-либо коллекцию, а затем итерации над символами слова и проверки против этой коллекции. Наконец, если все кошерное, найдите слово в словаре.

List<Character> charsFromUser = new LinkedList<Character>();
Set<String> dictionary        = new HashSet<String>();
boolean illegalCharUsed       = false;
boolean done                  = false;
String wordFromUser           = null;

// dictionary = // fill dictionary
// charsFromUser = // get chars from user
// wordFromUser = // get word from user

for (int i = 0, l = wordFromUser.length(); i < l && !illegalCharUsed; ++i) {
    char c = wordFromUser.charAt(i);
    if (!charsFromUser.contains(c)) {
        illegalCharUsed = true;
    } else {
        charsFromUser.remove(Character.valueOf(c)); // remove this line if 
                                                    // users may reuse letters
    }
}

if (!dictionary.contains(wordFromUser)) {
    if (!illegalCharUsed && charsFromUser.isEmpty()) { // isEmpty check if users
                                                       // must use all letters
        System.out.println("well done");
    } else {
        System.out.println("you didn't use the correct characters");
    }
} else {
    System.out.println("not a legal word");
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню