switch - repeat java
Java-¿El programa no está saliendo del bucle? (2)
while (choice != 7) {
System.out.println("--- Mathematical Calculator ---");
System.out.println("");
System.out.println("Pick an operation from the list - Use nos. 1 to 7");
System.out.println("1) Multiplication");
System.out.println("2) Division");
System.out.println("3) Addition");
System.out.println("4) Subtraction");
System.out.println("5) Find the area of a regular object");
System.out.println("6) Find the volume of a regular object");
System.out.println("7) Exit");
choice = userInput.nextInt();
switch (choice) {
case 1: {
System.out.println("");
System.out.println("You have chosen multiplication");
System.out.println("Enter a number");
double num1 = userInput.nextDouble();
System.out.println("Enter another number");
double num2 = userInput.nextDouble();
double num3 = num1 * num2;
System.out.println(num1 + " * " + num2 + " = " + num3);
num1 = num3;
while (choice2 != 5 || choice2 != 6) {
System.out.println(""); System.out.println("");
System.out.println("If you would like to build on the answer obtained - pick an operation from the list - Use nos. 1 to 4");
System.out.println("Else press 5 to return to the main menu");
System.out.println("1) Multiplication");
System.out.println("2) Division");
System.out.println("3) Addition");
System.out.println("4) Subtraction");
System.out.println("5) Start new calculation");
System.out.println("6) Exit");
choice2 = userInput.nextInt();
switch (choice2) {
case 1:
{
System.out.println("Enter number");
num2 = userInput.nextDouble();
num3 = num1 * num2;
System.out.println(num1 + " * " + num2 + " = " + num3);
num1 = num3;
break;
}
case 2:
{
System.out.println("Enter number");
num2 = userInput.nextDouble();
num3 = num1 / num2;
System.out.println(num1 + " / " + num2 + " = " + num3);
num1 = num3;
reak;
}
case 3:
{
System.out.println("Enter number");
num2 = userInput.nextDouble();
num3 = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + num3);
num1 = num3;
break;
}
case 4:
{
System.out.println("Enter number");
num2 = userInput.nextDouble();
num3 = num1 - num2;
System.out.println(num1 + " - " + num2 + " = " + num3);
num1 = num3;
break;
}
case 5: choice = 0; break;
case 6: choice = 7; break;
default: System.out.println("Invalid choice");
}
choice2 = 0;
}
break;
}
He publicado una pequeña parte de mi código. Mi problema es que, cuando ingreso 5 o 6 en la segunda consulta ( choice2
), mi programa continúa en bucle en lugar de salir del ciclo y volver al menú principal / finalizar el programa.
Agradecería algunos comentarios sobre lo que estoy haciendo mal.
La condición choice2 != 5 || choice2 != 6
choice2 != 5 || choice2 != 6
es siempre verdadero, porque no hay ningún número que sea igual a 5 y a 6 al mismo tiempo.
Si desea salir del circuito cuando ingresa 5 o 6, use &&
lugar:
while (choice2 != 5 && choice2 != 6)
Asegúrese de que la choice2
esté configurada antes de continuar con la siguiente iteración del ciclo.
Tenga en cuenta que puede salir del bucle desde su sentencia de switch
utilizando una construcción de ruptura rotulada:
calc: // Label the loop for using labeled break
while (true) {
...
switch(...) {
case 1:
break; // This will exit the switch
...
case 6: break calc; // This will exit the loop
}
}
Tu while (choice2 != 5 || choice2 != 6)
es incorrecto, ya que siempre dará como resultado verdadero. Si choice2 es 5, entonces la segunda cláusula será verdadera.
Sin mencionar que siempre estableces la opción 2 en 0 al final del ciclo, por lo que el ciclo continuará para siempre incluso si reemplazas ||
con &&
.