Проблема с получением сканера для распознавания факториалов - PullRequest
0 голосов
/ 08 апреля 2020

Я создаю калькулятор, который запрашивает у пользователя вводы a и b. Затем пользователь получает меню, состоящее из цифр 1-6, которое позволяет ему складывать, вычитать, умножать, делить, получать факториал и выходить для сброса l oop. Я хотел знать, есть ли у сканера способ распознавать вводимые пользователем данные как факториал для сложения или вычитания. Например, если введено значение 2! + 3!, то результат должен быть 8. Как заставить программу распознавать целое число с ! как факториал? Ниже мой код:

import java.util.Scanner;

public class Calculator {   
    public static void main(String[]args)   { 
        int m, n, opt, add, sub, mul,fact;

        double div;
        Scanner s = new Scanner(System.in); 
        System.out.print("Enter first number:");
        m = s.nextInt();
        System.out.print("Enter second number:");
        n = s.nextInt();
        while(true)
        {
            System.out.println("Enter 1 for addition");
            System.out.println("Enter 2 for subtraction");
            System.out.println("Enter 3 for multiplication");
            System.out.println("Enter 4 for division");
            System.out.println("Enter 5 for factorial");
            System.out.println("Enter 6 to Exit and start again");
            opt = s.nextInt();
            switch(opt)
            {
                case 1:
                add = m + n;
                System.out.println("Result:"+add);
                break;
                case 2:
                sub = m - n;
                System.out.println("Result:"+sub);
                break;

                case 3:
                mul = m * n;
                System.out.println("Result:"+mul);
                break;

                case 4:
                div = (double)m / n;
                System.out.println("Result:"+div);
                break;    

                case 5:
                int i=1;
                fact = 1;
                for( i = m; i > 0; i--){
                fact *= i;
                }
                System.out.println("Result:"+fact);
                break;

                case 6:
                System.out.print("Enter first number:");
                m = s.nextInt();
                System.out.print("Enter second number:");
                n = s.nextInt();
            }
        }
    }
}
...