Я программирую очень простой c калькулятор меню, который
- отображает меню
- , выбирает пользователя и выполняет действие на основе этого выбора
- отображать результаты
- l oop обратно в меню, пока пользователь не введет 10 для выхода из l oop
Что меня смутило, так это использование оператора switch в некоторое время l oop. Ввод 10 должен выйти из программы, и это происходит, но только сначала. Во второй раз, когда он показывает меню и запрашивает ввод, 10 не выходит из программы.
также приветствуются любые другие советы
public class MenuCalculator
{
public static void main(String[] args)
{
showMenu();
}
public static void showMenu()
{
Scanner input = new Scanner(System.in);
//menu display
System.out.println("Calculator Menu");
System.out.println("---------------");
System.out.println("1. Add two integers. ");
System.out.println("2. Add two doubles. ");
System.out.println("3. Subtract two integers. ");
System.out.println("4. Subtract two doubles. ");
System.out.println("5. Multiply two integers. ");
System.out.println("6. Multiply two doubles. ");
System.out.println("7. Divide two integers. ");
System.out.println("8. Divide two douvles. ");
System.out.println("9. Compute a factorial product of a number (n!) ");
System.out.println("10. Exit. ");
System.out.println(" ");
System.out.println("Your choice?");
int userChoice = input.nextInt();
while (userChoice < 10)
{
switch (userChoice)
{
case 1:
System.out.println("Enter the first number * : ");
int addInt1 = input.nextInt();
System.out.println("Enter the 2nd number: ");
int addInt2 = input.nextInt();
System.out.println(add(addInt1, addInt2));
break;
case 2:
System.out.println("Enter the first number !: ");
double plusDub1 = input.nextDouble();
System.out.println("Enter the 2nd number: @");
double plusDub2 = input.nextDouble();
System.out.println(addDbl(plusDub1, plusDub2));
break;
case 3:
System.out.println("Enter the first number: #");
int subInt1 = input.nextInt();
System.out.println("Enter the 2nd number: ");
int subInt2 = input.nextInt();
System.out.println(subtract(subInt1, subInt2));
break;
case 4:
System.out.println("Enter the first number: $");
double subDub1 = input.nextDouble();
System.out.println("Enter the 2nd number: ");
double subDub2 = input.nextDouble();
System.out.println(subtractDbl(subDub1, subDub2));
break;
case 5:
System.out.println("Enter the first number: %");
int multInt1 = input.nextInt();
System.out.println("Enter the 2nd number: ");
int multInt2 = input.nextInt();
System.out.println(multiply(multInt1, multInt2));
break;
case 6:
System.out.println("Enter the first number: ^");
double multDub1 = input.nextDouble();
System.out.println("Enter the 2nd number: ");
double multDub2 = input.nextDouble();
System.out.println(multiplyDbl(multDub1, multDub2));
break;
case 7:
System.out.println("Enter the first number: &");
int divInt1= input.nextInt();
System.out.println("Enter the 2nd number: ");
int divInt2= input.nextInt();
System.out.println(divide(divInt1, divInt2));
break;
case 8:
System.out.println("Enter the first number: -");
double divDub1= input.nextDouble();
System.out.println("Enter the 2nd number: ");
double divDub2= input.nextDouble();
System.out.println(divideDbl(divDub1, divDub2));
break;
case 9:
System.out.println("Enter a number: ");
int factoNum= input.nextInt();
System.out.println(factorialProduct(factoNum));
break;
default:
}//end switch
showMenu();
}//end while
}
public static int add(int n1, int n2)
{
//declare variables
int sum;
// sum and return
sum = n1 + n2;
return sum;
}
public static double addDbl(double n1, double n2)
{
//declaration
double sum;
// sum and return
sum = n1 + n2;
return sum;
}
public static int subtract(int n1, int n2)
{
int total;
total = n1 - n2;
return total;
}
public static double subtractDbl(double n1, double n2)
{
double total;
total = n1 - n2;
return total;
}
public static int multiply(int n1, int n2)
{
int total;
total = n1 * n2;
return total;
}
public static double multiplyDbl(double n1, double n2)
{
double total;
total = n1 * n2;
return total;
}
public static int divide(int n1, int n2)
{
int total;
total = n1 / n2;
return total;
}
public static double divideDbl(double n1, double n2)
{
double total;
total = n1 / n2;
return total;
}
public static int factorialProduct(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n * factorialProduct(n - 1);
}
}
}