[ Foro de Java ]

error en bucle?

13-Jun-2019 21:16
oscar gomez
0 Respuestas

Cordial saludo profesor Nacho,

queria presentarte el siguiente codigo en java que me envia un mensaje de error al ejecutarlo:
String index out of range: -1
el codigo es el siguiente:
package intercalandoletrasinicialesyfinales;

import javax.swing.JOptionPane;

/**
*
* @author OSCAR
*/
public class IntercalandoLetrasInicialesyFinales {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       // TODO code application logic here
       
       String cadena,nuevaCadena,subcadena1,subcadena2;
       int longCadena,ultima,primera;
       cadena=JOptionPane.showInputDialog("Digite una cadena de texto:");
       longCadena=cadena.length();
       ultima=longCadena-1;
       primera=0;
       nuevaCadena="";
       
       while( primera < ultima){
         
          subcadena1= cadena.substring(ultima);
         // System.out.println(subcadena1 + " ");
          subcadena2= cadena.substring(primera,1);
          //System.out.println(subcadena2 + " ");
         nuevaCadena= nuevaCadena + subcadena1.concat(subcadena2);
         
          primera++;
          ultima--;
         
         }
       System.out.print(nuevaCadena + " ");
     
             
   }
   
}

no entiendo por que yo le hago un seguimiento y deberia salirse para cuando el while no se cumple, ejemplo:
para la cadena de longitud 6: abcdef
al hacerle el traceo tengo lo siguiente:
  primera    ultima
       0              5
 obtendriamos: fa
      1               4
 obtendriamos: eb
       2              3
 obtendriamos: dc
      3              2
en este instante como veis 3 no es menor que 2 y deberia salirse del while y mostrar la nuevacadena: faebdc

Agradezco su amabilidad y experiencia para que me indiques cual es el error que se esta presentando o donde exactamente por que la verdad por traceo no entiendo por que se desborda.

Atentamente, Oscar




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...