Java - Al poner una letra quisiera que me salga el mensaje de "ese digito no es valido" .. soy principiante

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Al poner una letra quisiera que me salga el mensaje de "ese digito no es valido" .. soy principiante

Publicado por pauz Al (2 intervenciones) el 05/04/2021 18:18:32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package guiapdf2;
 
import java.util.Scanner;
 
public class GuiaPdf2 {
 
    public static void main(String[] args) {
        Scanner consola = new Scanner(System.in);
        int numero;
        String signo = "";
        System.out.println("Ingrese un numero: ");
        numero = consola.nextInt();
 
        if (numero > 0) {
            signo = "Positivo";
 
        } else if (numero < 0) {
            signo = "Negativo";
 
        } else if (numero == 0) {
            signo = "Neutro";
        } else {
            System.out.println("Ese digito no es valido");
 
        }
        System.out.println("el numero " + numero + " es " + signo);
 
    }
 
}
consulta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Al poner una letra quisiera que me salga el mensaje de "ese digito no es valido" .. soy principiante

Publicado por Kabuto (1381 intervenciones) el 05/04/2021 21:41:53
Hola.

Tienes que usar try catch

Cuando usas nextInt() para leer con el objeto Scanner, solo te va a aceptar números.
Si introduces una letra, como ya habrás comprobado, se produce una excepción y el programa se cierra abruptamente:
1
2
3
4
5
6
Ingrese un numero:
f
Exception in thread "main" java.util.InputMismatchException
	at java.base/java.util.Scanner.throwFor(Scanner.java:939)
	......
	.......

Bien, pero con try catch, puedes capturar esa excepción y decidir que ha de ocurrir en ese caso.
Y lo que queremos que ocurra, es que informe de que se ha introducido un "dígito no válido":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class GuiaPdf2 {
 
	public static void main(String[] args) {
		Scanner consola = new Scanner(System.in);
		int numero;
		String signo = "";
		try {
			System.out.println("Ingrese un numero: ");
			numero = consola.nextInt(); //Si no se le da un número, lanza excepción
 
			if (numero > 0) {
				signo = "Positivo";
 
			} else if (numero < 0) {
				signo = "Negativo";
 
			} else if (numero == 0) {
				signo = "Neutro";
			}
 
			System.out.println("el numero " + numero + " es " + signo);
		}
		catch(Exception ex) { //Capturamos la excepción lanzada por nextInt() y decidimos que ocurre
			System.out.println("Ese digito no es valido");
		}
 
	}
 
}

Ahora sí, al introducir algo que no es posible convertir a número, se produce excepción pero la capturamos y podemos decidir lo que ha de ocurrir:
1
2
3
Ingrese un numero:
f
Ese digito no es valido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Al poner una letra quisiera que me salga el mensaje de "ese digito no es valido" .. soy principiante

Publicado por Pritchar Albert (2 intervenciones) el 06/04/2021 03:08:43
muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar