ジョン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のに等しいです。