es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué recibo una excepción de desbordamiento cuando ejecuto este programa que muestra todas las palabras que empiezan con b?

import java.util.Scanner;

public class vrzbi {
    public static void main(String[]args){
        System.out.println("Escriba una oración");
        Scanner input = new Scanner(System.in);
        String sentence = input.nextLine();
        int j = 0;
        for (int i = 1; i < sentence.length(); i++) {
            if ( sentence.charAt(i-1) == ' ' && sentence.charAt(i) == 'b'){
                j = i;
                while (sentence.charAt(j) != ' ' && j<sentence.length()){
                    system.out.print(sentence.charat(j));
                    j++;
                }
                system.out.println(" ");
            }
        }
    }
}

los valores correctos aparecen: por ejemplo, “brother bob tiene un bebé” produce “bob bebé”. pero después de eso, obtengo un error de desbordamiento en la línea del while. system.out.print(sentence.charat(j));=”” j++;=”” }=”” system.out.println(“=”” “);=”” }=”” }=”” }=”” }=”” ="" los="" valores="" correctos="" aparecen:="" por="" ejemplo,="" "brother="" bob="" tiene="" un="" bebé"="" produce="" "bob="" bebé".="" pero="" después="" de="" eso,="" obtengo="" un="" error="" de="" desbordamiento="" en="" la="" línea="" del=""></sentence.length()){
system.out.print(sentence.charat(j));
j++;
}
system.out.println(" ");
}
}
}
}

los valores correctos aparecen: por ejemplo, “brother bob tiene un bebé” produce “bob bebé”. pero después de eso, obtengo un error de desbordamiento en la línea del while.>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en el código Java proporcionado, el programa solicita al usuario ingresar una oración y luego busca palabras que comienzan con la letra “b”. Luego imprime esas palabras que comienzan con “b” en una línea separada.

    El problema con el código es que no verifica si la variable de bucle j ha alcanzado la longitud de la cadena de la oración antes de acceder al carácter en el índice j. Esto puede causar un “error de excepción de desbordamiento”, también conocido como IndexOutOfBoundsException.

    Para solucionar este error, el código debe agregar una condición en el bucle while para verificar si j es menor que la longitud de la cadena de la oración antes de acceder al carácter en el índice j. El bucle while actualizado debe verse así:

    while (j < sentence.length() && sentence.charAt(j) != ‘ ‘){ // verifique si j es menor que la longitud de la cadena de la oración antes de acceder al carácter en el índice j

    System.out.print(sentence.charAt(j));
    j++;
    

    }

    Al agregar esta condición, el programa evitará intentar acceder a caracteres fuera de los límites de la cadena de la oración y debería resolverse el error de excepción de desbordamiento.

Comments are closed.