[ 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




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)