なぜ配列の長さは、境界エラーのうち、インデックスを引き起こし、更新されていませんか?

ジョンWintroub:

私の2D配列のサイズは、と思われるEncryptedArr、以内に更新取得されていないencryptData方法。

この方法は、整数配列に(mainメソッド内で指定された)文字列を暗号化することを意味します。ループが実際に正しく配列にデータを配置しているかどうかを確認するために、私はそれに入るデータと一致するように配列のサイズを必要とします。

static void encryptData(String toEncrypt)
{
   stringLength = toEncrypt.length()
   encryptedArr = new int[stringLength][stringLength]
   for (rowIndex = 0; rowIndex <= stringLength; rowIndex++)
   {
      for (columnIndex = 0; columnIndex < encryptedArr[rowIndex].length; 
                                                          columnIndex++)
      {
         while (indexOfString <= stringLength)
         {
            charToEncrypt = toEncrypt.charAt(indexOfString)
            charValue = charToEncrypt;
            encryptedArr[rowIndex][columnIndex] += charValue;
            indexOfString++;
         }
      }
   }
}
public static void main(String[] args)
{
   String thing = "1";
   encryptData(thing);
   System.out.println("Here is the array: "+ encryptedArr);
}

charAt私は暗号化された文字列のサイズに合わせて更新され得ていない配列のサイズが原因であると考えていることを「文字列のインデックスアウト境界の」エラーの原因となっています。主な方法は、その全体の配列を印刷するようになっています。どちらEncryptDataと主な方法は、上記されています。コードは、配列のサイズを更新しているのはなぜ働いて、それを修正するために何を行うことができませんか?

Adwait Vaidya:
for (rowIndex = 0; rowIndex <= stringLength; rowIndex++){ //here
    for (columnIndex = 0; columnIndex < encryptedArr[rowIndex].length;columnIndex++){
         while (indexOfString <= stringLength){
          charToEncrypt = toEncrypt.charAt(indexOfString)
          charValue = charToEncrypt;
          encryptedArr[rowIndex][columnIndex] += charValue;
          indexOfString++;
     }
  }

}

ループのためのあなたの最初では、以下に設定し、繰り返し条件を持っているか、rowIndexには、配列の最大インデックスが配列のサイズよりも小さい常に1であるので、あなたにエラーを与えるencryptedArrへの呼び出しをStringLengthに等しくなるとそうStringLengthのに等しいです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=336054&siteId=1