Buenas, he empezado este año a estudiar DAM, y se nos ha mandado un proyecto para la 1º evaluación.
El proyecto en cuestión es un programita el cual te muestre la teoría de un tema, puedas responder a 10 preguntas que previamente han sido seleccionadas aleatoriamente y en base al tiempo que hayas tardado, te lo muestre y además te de una calificación, la última parte es lo mismo que la anterior, pero que además de mostrar las preguntas, también muestre las respuestas.
Ya lo tengo casi finiquitado, a excepción de por un error que me da en el menú. El caso es que tengo declarada una variable de tipo entero para las opciones del menú, por lo que si el usuario ingresa algo que no sea de tipo entera, peta dando como error:
Exception in thread "main" java.util.InputMismatchException
public static void menu() {
boolean repetir = true;
int opcion;
do {
System.out.print(menu);
opcion = teclado.nextInt();
teclado.nextLine();
System.out.println("\n");
if (opcion == 1)
System.out.print(teoria);
else
if (opcion == 2) {
actividad();
} else
if(opcion == 3)
actividadresuelta();
else
if(opcion == 4){
System.out.println("Adiós");
repetir = false;
} else
if(opcion < 1 || opcion > 4)
System.out.println("Error número incorrecto");
} while (repetir);
}
Ese es el código del menú. He probado haciendo un vector de tipo String en el que guardaba los valores {"1", "2", "3", "4"} de manera que solucionaba el error, ya que ahora fuera lo que fuera lo que el usuario ingresara, podía controlarlo.
Haciendo esto, el programa no funciona del todo bien, ya que en el momento en el que estando en las actividades, si el usuario responde de manera incorrecta, me tira al menú en vez de continuar haciendo las preguntas (sólo puede salir apretando el 0 o terminando las 10 preguntas).
Así que la cuestión por la que posteo es... ¿como puedo hacer un try catch para capturar ese error y devolver una String que diga que el valor ha de estar entre 1-4?.
package Proyecto;
import java.util.Scanner;
public class Try {
public static void main(String arg[]) {
Scanner teclado = new Scanner(System.in);
int opcion;
opcion = teclado.nextInt();
try
{
if (opcion != 1 || opcion !=2 || opcion !=3 || opcion !=4);
}
catch(java.util.InputMismatchException excepcion)
{
System.out.println("El valor debe estar entre 1-4");
}
teclado.close();
}
}
Eso es lo que he probado hasta ahora, pero no funciona.