Как улучшить код простенького консольного калькулятора?

Только начал изучать Java, решил написать простенький консольный калькулятор. Как код можно улучшить? (Желательно с объяснением)

import java.util.*;
public class Calculator {

    public void  calkulate() {
        Scanner number = new Scanner(System.in);

        System.out.println("Введите 1 число");
        int firstNum = number.nextInt();

        System.out.println("Введите 2 число");
        int secondNum = number.nextInt();

        System.out.println("Введите математическое действие ");
        System.out.println("А именно:'+' или '-' или '*' или '/'");

        String sing = number.next();


        number.close();

        if(sing.equals("+")){
            System.out.print("Сумма цифр = ");
            System.out.println(firstNum + secondNum);
        }else{
            if(sing.equals("-")){
                System.out.print("Разность цифр = ");
                System.out.println(firstNum - secondNum);
            }else{
                if(sing.equals("*")){
                    System.out.print("Произведение цифр = ");
                    System.out.println(firstNum * secondNum);
                }else{
                    if(sing.equals("/")){
                        System.out.print("Деление цифр = ");
                        System.out.println(firstNum / secondNum);
                    }
                }
            }
        }


    }
}

Ответы (2 шт):

Автор решения: Aziz Umarov

Как написал @Stranger уберите вложенность

И лучше сделать через switch читается лучше

switch(sign) {
  case "+":
   .....
  break;
  case "-":
   .....

}

Извините что не написал полностью. С телефона набираю

→ Ссылка
Автор решения: Стас

Лучше поздно чем никогда...


Дополню ответ @Aziz Umarov

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int first, second, res;
        try {
            System.out.print("First: ");
            first = scan.nextInt();

            System.out.print("Second: ");
            second = scan.nextInt();
        } catch (InputMismatchException e) {
            System.err.println("Invalid number");
            return;
        }

        System.out.print("Action: ");
        try {
            switch (scan.next().charAt(0)) {
                case '+':
                    res = first + second;
                    break;
                case '-':
                    res = first - second;
                    break;
                case '*':
                    res = first * second;
                    break;
                case '/':
                    res = first / second;
                    break;
                default:
                    System.err.println("Invalid action");
                    return;
            }
            System.out.println(res);
        } catch (ArithmeticException e) {
            System.err.println("Division by zero");
        }
    }
}
  • Заменил вложенный if/else на switch case
  • Добавил немного обработки исключений (при неверном вводе или делении на 0)
  • Добавил ветку default для обработки неверной операции.

Также замечу, что switch case на char работает быстрее, чем на строках - поэтому я сделал через него.

→ Ссылка