¿Por qué no se actualiza longitud de la matriz, provocando un vistazo índice de error de límites?

John Wintroub:

Parece ser que el tamaño de mi matriz 2D, EncryptedArr¿no recibir actualización dentro del encryptDatamétodo.

Este método está destinado a cifrar una cadena (dado dentro del método principal) en una matriz de enteros. Con el fin de ver si los bucles están en realidad introduce datos en el arreglo correctamente, necesito el tamaño de la matriz para que coincida con los datos que entran en ella.

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);
}

charAtestá causando un error de "Cadena Índice fuera de los límites" que creo que es debido al tamaño de la matriz no tener actualizada para que coincida con el tamaño de la cadena que se está encriptada. El principal método se supone que debe imprimir el conjunto en su totalidad. Tanto EncryptDatay métodos principales están arriba. ¿Por qué es el código actualizando el tamaño de la matriz no está trabajando, y qué se puede hacer para solucionarlo?

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++;
     }
  }

}

En su primer ciclo for que tiene condición de establecimiento repetición a menor o igual a StringLength así que cuando el rowIndex se hace igual a StringLength la llamada al encryptedArr le dará un error debido a que el mayor índice de matriz es siempre 1 menos que el tamaño de la matriz.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=336068&siteId=1
Recomendado
Clasificación