Foros del Web » Programación para mayores de 30 ;) » Java »

Switch Case en Java

Estas en el tema de Switch Case en Java en el foro de Java en Foros del Web. Comunidad: Tengo un switch case, el cual me da error al ingresar una letra. Me explico: tengo 4 opciones 1 a 4 pero, si ingreso ...
  #1 (permalink)  
Antiguo 05/10/2011, 08:57
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Switch Case en Java

Comunidad:

Tengo un switch case, el cual me da error al ingresar una letra.
Me explico: tengo 4 opciones 1 a 4 pero, si ingreso una letra cualquiera, me tira este error:


java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Carga.MenuPrueba.<init>(MenuPrueba.java:42)
at Carga.Inicio.main(Inicio.java:13)


Y lo que quiero es que me ataje ese error y no me bote el programa.

Acá dejo la clase java:



package ProcedimientosAlmacenados;

import java.sql.*;
import java.util.*;
import java.io.*;

public class ProcedimientoAgregar {

private Connection Conexion;
private CallableStatement cstmt = null ;


public ProcedimientoAgregar(Connection Con) {

Conexion = Con;
}

public static void Agregar() throws Exception
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLSer verDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://MARTE:1433;DatabaseName=Prueba", "sa", "gsiinformatica");
//Step-1

CallableStatement cstmt = con.prepareCall("{call ProcedAlmac_IngresarPersona(?,?,?)}");
Scanner sc=new Scanner(System.in);

Scanner consola = new Scanner(System.in);
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
int opcion = 0;
String seleccion = "";


// Si fuese integer System.out.print("Ingrese el numero tanto: ");
//int x=sc.nextInt();

System.out.println ("************************************");
System.out.println ("************************************");
System.out.println ("** **");
System.out.println ("** MODULO DE CARGAS **");
System.out.println ("** **");
System.out.println ("** 1 - Ingreso de datos **");
System.out.println ("** **");
System.out.println ("************************************");
System.out.println ("************************************");

System.out.println ("");

System.out.print("Ingrese el nombre: ");
String nombre = sc.next().toUpperCase();

System.out.print("Ingrese el apellido: ");
String apellido = sc.next().toUpperCase();

System.out.println("Ingrese el RUT: Ej: 12.114.175-2 ");
String rut = sc.next().toUpperCase();
//Step-2
cstmt.setString(1,nombre);
cstmt.setString(2,apellido);
cstmt.setString(3,rut);
//Step -3
cstmt.execute();
System.out.println("***Llamada a Procedimiento Almacenado****");
System.out.println("Registro Agregado con Exito!!!!!!");
con.close();


do{
System.out.println("");
System.out.println("Desea seguir ingresando personas?");

System.out.println("");
System.out.println(" Opcion 1: Seguir - Opcion 2: Salir");
opcion = consola.nextInt();

switch (opcion) {
case 1:
System.out.println("Opcion 1: Seguir");
System.out.println("");
ProcedimientoAgregar.Agregar();
break;
case 2:
System.out.println("Opcion 2: Salir");
System.out.println("");
System.out.println("\nHasta Pronto!!!");
System.exit(2);
break;
default:
System.out.println("Seleccion no valida");
System.out.print("Pulse S si desea continuar o cualquier tecla y luego ENTER para salir: ");
seleccion = stdin.readLine();
}
} while (seleccion.equals("s"));
System.out.println("\nHasta Pronto!!!");
System.exit(4);

}
}
  #2 (permalink)  
Antiguo 05/10/2011, 09:40
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Switch Case en Java

A veces es necesario pensar en las consecuencias de lo que uno hace.

System.out.println("");
System.out.println(" Opcion 1: Seguir - Opcion 2: Salir");
opcion = consola.nextInt();

opcion es un int, si introduces por consola algo que no es un int rompe al no conseguir parsearlo a int, de ahí que te salte esa excepción.

Puedes intentar esto:
System.out.println("");
System.out.println(" Opcion 1: Seguir - Opcion 2: Salir");
try {
opcion = consola.nextInt();
} catch (java.util.InputMismatchException i) {
opcion = 0; // Default
}
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 05/10/2011, 09:43
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Switch Case en Java

A ver, si le estás diciendo que tienes que introducir un número, y metes una letra ¿cómo esperas que no dé error?

Cita:
si ingreso una letra cualquiera, me tira este error:
Cita:
at java.util.Scanner.nextInt(Unknown Source)
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: consola
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:43.