Java - Error al momento de capturar un texto y compararlo

 
Vista:

Error al momento de capturar un texto y compararlo

Publicado por David (2 intervenciones) el 22/10/2017 21:57:58
Cordial saludo.

Agradezco su ayuda o colaboración con mi inquietud, son novato en este tema de programación en java.

Estoy siguiendo un libro de java y tratando de hacer un menú de selección utilizando dos do while, pero al momento de seleccionar la letra q para salir me dice que tengo un error y no he dado para corregirlo. plasmare el código y el error que me sale. Agradecería me indicaran que estoy haciendo mal.
Código:

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
31
32
33
34
35
36
package libroAmarillo;
import java.util.Scanner;
 
 
public class ayuda2 {
 
	private static Scanner opcion;
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//La entrada se realizara con Scanner ok
		String seleccion;
		int opc;
 
		opcion = new Scanner(System.in);
 
		do{
			System.out.println("Selecciona una Opcion de Ayuda"+"\n1. if"+"\n2. Switch"+"\n3. for"+"\n4. while"+"\n5. do-while"+"\n6. break"+"\n7. continue");
			do{
			System.out.println("Elija una opción o q/Q para salir");
				seleccion=opcion.nextLine();
 
			}while(seleccion.equals("\n") || seleccion.equals(""));
 
			opc = Integer.parseInt(seleccion);
 
			System.out.println(seleccion);
			System.out.println(opc);
 
		}while(!seleccion.equalsIgnoreCase("q") & opc<1 || opc>7);
 
		System.out.println("sali del programa");
 
	}
 
}

Error:

Selecciona una Opcion de Ayuda
1. if
2. Switch
3. for
4. while
5. do-while
6. break
7. continue
Elija una opción o q/Q para salir
q
Exception in thread "main" java.lang.NumberFormatException: For input string: "q"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at libroAmarillo.ayuda2.main(ayuda2.java:26)
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 Sebastian
Val: 288
Bronce
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Error al momento de capturar un texto y compararlo

Publicado por Sebastian (91 intervenciones) el 22/10/2017 23:08:04
El error esta en que estas convirtiendo la letra "q" a entero y eso no se puede, por eso te salta la excepción

1
2
3
4
5
6
7
8
9
10
int op;
try{
    op=Integer.parseInt(seleccion);
}catch(NumberFormatException e){
    if(h.equalsIgnoreCase("q")){
        op=0;
    }else{
        op=-1;
    }
}


Entonces cuando ingresas una letra y la conviertes a int salta la excepción, y el try la captura y luego toma el condicional comprobando que la letra sea la "q," si es pues le pone 0 a la opción y si es otra letra le pone -1.
Ya tu tienes que mirar como lo acomodas a tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Gracias

Publicado por David (2 intervenciones) el 23/10/2017 03:56:17
Gracias por tu ayuda.

Voy a probar y acomodar el código

muchisimas 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