Вложенный в то время как цикл выполняется, внешний цикл не - PullRequest
0 голосов
/ 27 сентября 2018

Я довольно новичок в Java и в настоящее время работаю над шифрованием / шифрованием Vigenere.Я уже получил дешифрование и шифрование с известным ключом, единственное, что я хочу сейчас сделать - это атака по словарю.Для этого алгоритм берет строку из текстового файла и использует ее в качестве ключа для расшифровки сообщения, затем берет это расшифрованное сообщение и снова сопоставляет его со словарем (и если ключ выдает правильное слово, он будетрасшифруйте оставшуюся часть сообщения этим ключом).

public static String decoderNoKey(String msg, Scanner words) {
Scanner words2 = words;
while (words.hasNextLine()) {
  String dicStr = words.nextLine();
  String result = decoder(msg, dicStr);

  while (words2.hasNextLine()) {
    String meta = words2.nextLine();
    if(result.equalsIgnoreCase(meta)) {
      System.out.println("Found a matching message: " + result);
      System.out.println("This is the corresponding key: " + dicStr);
      return meta;
    }
  }
 }
  return "There was no matching word";
}

это мой код, декодер ();Метод работает просто отлично.Если я попытаюсь ввести действительный шифр, проблема в том, что внешний цикл while выполняется только один раз (обнаружил это поверх операторов print).Файл слов также довольно большой, более 84000 слов.

1 Ответ

0 голосов
/ 27 сентября 2018

words2 не является копией words.Это новое имя, относящееся к тому же объекту ... Таким образом, ваш внутренний цикл истощает ваш сканер, и ваш внешний цикл больше не имеет ничего общего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...