Autor Tema: Excepciones  (Leído 3294 veces)

drate

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Excepciones
« en: 25 de Junio 2023, 13:47 »
Buenas tardes.
Estoy haciendo (intentando más bien) un pequeño programa que lee un double de entrada que tiene que comprobar si es positivo tratando la excepción de manera que el programa no se detenga y permita nuevamente introducir el dato. Trato la excepción pero no sé como  conseguir que siga leyendo hasta la introducción del dato correctamente. Me podéis echar una mano? Muchas gracias. Un saludo.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Excepciones
« Respuesta #1 en: 25 de Junio 2023, 19:31 »
Has de usar un bucle y ayudarte de un boolean de manera que finalice el bucle solo si la lectura no ha provocado ninguna excepción.

Podría hacerse así, por ejemplo:
Código: [Seleccionar]
public class PedirDouble {

private static Scanner teclado = new Scanner(System.in);

public static void main(String[] args) {

double dato = 0;
boolean esValido = false;

while(!esValido) {
try {
dato = pedirDoublePositivo();
//Si la línea anterior no ha lanzado excepción, es que es un dato válido
esValido = true; //Ponemos fin al bucle
}
catch(Exception ex) {
System.out.println("ERROR. Dato invalido:\n" + ex.getMessage());
}
}

System.out.println("\nValor introducido: " + dato);
System.out.println("\n\t\tFIN DE PROGRAMA");

}

private static double pedirDoublePositivo() throws Exception {

System.out.print("\nIntroduzca un valor double positivo: ");
double valor = Double.parseDouble(teclado.nextLine());

if (valor < 0)
throw new Exception("El valor " + valor + " no es positivo.");
else
return valor;
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

drate

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Re: Excepciones
« Respuesta #2 en: 02 de Julio 2023, 12:06 »
Buenos días.
Estoy arreglando el código según tus indicaciones y me da fallo en el método cadenaEsValida.

En concreto en la comparación   if (car >= &#39;0&#39; && car <= &#39;9&#39;). No entiendo esa codificación. Me lo puedes aclarar?
Muchas gracias. Un saludo.


Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Excepciones
« Respuesta #3 en: 02 de Julio 2023, 12:36 »
Hola.
Que raro, supongo que te ha aparecido esa codificación por alguna diferencia entre el juego de caracteres de nuestros navegadores, ya que no es eso lo que yo escribí.

Te pego una captura de lo que realmente había publicado yo:
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".