Pregunta rápida. Tengo este código en un programa:

input = JOptionPane.showInputDialog("Enter any word below")
int i = 0;  
for (int j = 0; j <= input.length(); j++)  
{
    System.out.print(input.charAt(i));  
    System.out.print(" "); //don't ask about this.  
    i++;
}   
  • Entrada y de entrada de usuario
  • i ser entero con valor de 0, como se ve

De ejecutar el código, se produce este error:

Excepción en el thread «main» java.lang.StringIndexOutOfBoundsException: String index out of range: 6

en java.lang.De la cadena.charAt(Fuente Desconocida)

en el programa de.principal(el programa.java:15)

Si puedo cambiar el charAt int a 0 en lugar de i, no produce el error…

¿qué se puede hacer? ¿Cuál es el problema?

  • ¿por qué utilizar i en el bucle? no podía utilizar j?
  • en este caso estoy usando yo, como un recuento de número entero, como lo hacen en los bucles for, como que no me esperaba para utilizar un bucle for, y luego hice…
  • Yo votaría por el otro responde, pero yo no disponen de la rep aún
  • Gracias a todos por ayudarme con esto!
InformationsquelleAutor Kyle | 2014-03-24

7 Comentarios

  1. 7

    Reemplazar:

    j <= input.length()

    … con …

    j < input.length()

    Java String carácter de indexación está basado en 0, por lo que su condición de terminación del bucle debe ser en input‘s longitud – 1.

    Actualmente, cuando el bucle llega a la penúltima iteración antes de la terminación, a la que hace referencia input carácter a un índice igual a input‘s longitud, que arroja el StringIndexOutOfBoundsException (un RuntimeException).

  2. 3

    Cadena de indexación en Java (como cualquier otro de la matriz de estructura) es de base cero. Esto significa que input.charAt(0) es el carácter más a la izquierda. El último personaje es, a continuación, en input.charAt(input.length() - 1).

    Así se hace referencia a uno de demasiados elementos en su for bucle. Reemplazar <= con < a revisión. La alternativa (<= input.length() - 1) podría morder duro si alguna vez el puerto de su código a C++ (que ha unsigned tipos).

    Por el camino, el tiempo de ejecución de Java emite extremadamente útil excepciones y mensajes de error. Hacer aprender a leer y entender.

  3. 1

    Reemplazar por condición de bucle j <= input.length() con j < input.length() , como una cadena en Java sigue basado en cero de la indización.
    por ejemplo, la indexación de la Cadena de "india" empezaría de 0 a 4.

  4. 0

    Accediese a la matriz de [0-longitud], debe hacerlo desde [0-(longitud-1)]

    int i = 0;
    for (int j = 0; j < input.length(); j++)
    {
        System.out.print(input.charAt(i));
        System.out.print(" "); //don't ask about this.
        i++;
    }
  5. 0
    for (int j = 0; j < input.length(); j++)
    {
        System.out.print(input.charAt(j));
        System.out.print(" "); //don't ask about this.
    }
  6. 0

    Tratar el siguiente:

    j< input.length() 

    y luego:

    int i = 0;
    for (int j = 0; j < input.length(); j++)
    {
        System.out.print(input.charAt(i));
        System.out.print(" "); //don't ask about this.
        i++;
    } 
  7. 0

    El uso de este;

    for (int j = 0; j < input.length(); j++)
    {
        System.out.print(input.charAt(j));
        System.out.print(" "); //don't ask about this.
    }

Dejar respuesta

Please enter your comment!
Please enter your name here