-1

Сделал простой калькулятор, но последний метод в классе main не выполняется, т. е. не считает.

Есть подозрение, что накосячил в методах:

package program;
import  java.util.Scanner;
public class Calculator2 {
public static int getNumber1() { //метод для 1 числа
    Scanner scanner = new Scanner(System.in);
    int number1 = scanner.nextInt();
    return number1;
     }
    public static int getNumber2() { //метод для 2 числа
    Scanner scanner = new Scanner(System.in);
    int number2 = scanner.nextInt();
    return number2;
   }
    public static char getSymbol() { // метод для арифметической операции
     Scanner scanner = new Scanner(System.in);
    char symbol = scanner.next().charAt(0);
    return symbol;
    }
    public static int total(int a, int b, char c){
   a = getNumber1();
   b = getNumber2();
   c = getSymbol();
    int totalMath;
   if (c == '+') {
       System.out.println(a + b);
   }
   else if (c == '-') {
       System.out.println(a - b);
   }
   else if (c == '*') {
       totalMath = a * b;
   }
   else if (c == '/') {
       totalMath = a / b;
   }
   else {
       System.out.println("Пожалуйста, проверьте правильность введенных данных");
   }
totalMath = total(a, b, c);

return totalMath; }

 public static void main(String[] args) {

   System.out.println("Введите число: ");
   int number1 = getNumber1();
    System.out.println("Ваше число: " + number1 + ". Введите второе число: ");
   int number2 = getNumber2();
    System.out.println("Ваше число: " + number2 + " Введите операцию, которую 
 хотите 
    совершить между двумя введенными числами. Пришлите \"+\", \"-\", \"*\" или 
\"/\"");
char symbol = getSymbol();
int calculator = total(number1, number2, symbol);
System.out.print("Отлично! Вы ввели знак " + "\"" + symbol + "\"" + ". Ваш 

результат: " + calculator);

}

}

1 Answers1

1

Вы в методе метод total(), перезаписываете переданные аргументы. Уберите повторный вызов методов. Плюс у вас получилась рекурсия.:

public static int total(int a, int b, char c){
 a = getNumber1(); // перезапись переданного значения a
 b = getNumber2(); // перезапись переданного значения b
 c = getSymbol();  // перезапись переданного значения c
 //....
 totalMath = total(a, b, c); // рекурсивный вызов
 return totalMath;
}

Также для поиска подобных проблем, используйте режим отладки - Как и какими средствами находить ошибки в коде Java?

kio
  • 647
  • Спасибо за обратную связь) Перезапись удалил, но когда убрал рекурсивный метод, IDE стала ругаться, что в начале переменную totalMath нужно инициализировать после объявления. Простите меня, я тупой – Темный властелин Dec 06 '22 at 09:48
  • Разобрался, спасибо еще раз за обратную связь!) Крепкого здоровья и исполнения желаний и мечтаний) – Темный властелин Dec 06 '22 at 09:57
  • @Темныйвластелин У вас просто мало опыта, все совершали подобные ошибки. Изучите процесс отладки, он очень помогает в работе, и вы буквально увидите как выполняется программа. – kio Dec 06 '22 at 10:17