Как решить эту ошибку диапазона в моем коде? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать приложение для шифрования на Android Studio, используя флаттер.Прямо сейчас я работаю над простым шифром Atbash, но при попытке проверить его получаю ошибку диапазона.Это коды шифрования и дешифрования:

  @override
  String encrypt(String plaintext, {String key}) {
    String alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String alfaReverso = "";
    for(int i = alfa.length-1; i > -1; i++){
      alfaReverso += alfa[i];
    }

    String encryText = "";
    for (int i = 0; i < plaintext.length; i++){
      if(plaintext.codeUnitAt(i) == 32){
        encryText += " ";
      }
      else{
        int count = 0;
        for(int j = 0; j < alfa.length; j++){
          if(plaintext[i] == alfa[j]){
            encryText += alfaReverso[j];
            break;
          }
        }
      }
    }

    return "ENCRYPT Plain = " + encryText;
  }
}

  @override
  String decrypt(String cyphertext, {String key}) {
    String alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String alfaReverso = "";
    for(int i = alfa.length-1; i > -1; i++){
      alfaReverso += alfa[i];
    }

    String dencryText = "";
    for (int i = 0; i < cyphertext.length; i++){
      if(cyphertext.codeUnitAt(i) == 32){
        dencryText += " ";
      }
      else{
        int count = 0;
        for(int j = 0; j < alfaReverso.length; j++){
          if(cyphertext[i] == alfaReverso[j]){
            dencryText += alfa[j];
            break;
          }
        }
      }
    }

    return "ENCRYPT Plain = " + dencryText;
  }

При попытке запустить это исключение диапазона, которое я получаю:

I / flutter (6004): RangeError (index): недопустимое значение: Не в диапазоне 0..25 включительно: 26

Я знаю, что это как-то связано с алфавитом, который я использую, но я не знаю, как его решить.

1 Ответ

0 голосов
/ 08 октября 2018

При запуске с наивысшего индекса возникает ошибка:

 for(int i = alfa.length-1

Ваш индекс должен снизиться, и вы используете ++.

Use this:

for(int i = alfa.length-1; i > -1; i--)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...