Buenos dias a todos... Me pregunto donde poner el bloque try-catch para que Input(InputMismatchException) no entero funcione en este codigo, si lo pongo aqui no funciona, si lo pongo antes while, es un infinito bucle, si puede explicar dónde y por qué será perfecto, gracias por su tiempo.
public void additionalIngredients() { Set<Integer> set = new HashSet<>(); boolean flag = false; while (!flag) { System.out.println("Enter your choice for extra toppings "); int choices = scanner.nextInt(); scanner.nextLine(); try { switch (choices) { case 0: System.out.println("Done"); flag = true; break; case 1: if (!set.contains(choices)) { double extraSauce = 1.2; setAdditionalStuff(getAdditionalStuff() + extraSauce); System.out.println("Extra sauce added on your pizza \n"); break; } else { System.out.println("You already added extra sauce, please consider to add something else"); break; } case 2: if (!set.contains(choices)) { double extraCheese = 2.3; setAdditionalStuff(getAdditionalStuff() + extraCheese); System.out.println("Extra cheese added on your pizza \n"); break; } else { System.out.println("You already added extra cheese, please consider to add something else"); break; } case 3: if (!set.contains(choices)) { double largeDough = 0.7; setAdditionalStuff(getAdditionalStuff() + largeDough); System.out.println("Your pizza has a large Dough \n"); break; } else { System.out.println("Your pizza has already a large dough, consider something else"); break; } } set.add(choices); } catch (InputMismatchException e) { System.out.println("Please enter an integer!"); } } }Hay muchas maneras de hacer esto. Esfuércese siempre por encontrar soluciones que hagan que su código sea más fácil de leer y comprender.
Una forma de hacerlo: podría, por ejemplo, crear otro método auxiliar fetchSelectionFromUser() que solo haga una cosa: repetir (con try catch) hasta que el usuario ingrese un número válido .
Una regla rectora es el principio de una sola capa de abstracción . Y eso te dice que tener un interruptor en un ciclo de prueba no es el camino a seguir. Como se dijo, podría optar por un ciclo que simplemente llama a dos métodos: uno que obtiene la entrada y otro que la procesa.