如何在我的代码中解决此范围错误?

时间:2018-10-07 23:20:01

标签: encryption dart flutter

我正在尝试使用flutter在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(索引):无效值:不在0..25范围内,包括26:

我知道这与我使用的字母有关,但是我不知道如何解决。

1 个答案:

答案 0 :(得分:1)

从最高索引开始时出现错误:

C.singleton_class.send(:define_method, :x) {...}

您的索引必须下降,您正在使用++。

 for(int i = alfa.length-1