Не работает метод, производящий операцию над двумя числами
Цель - написать однострочный калькулятор, который умеет работать только с числами от 1 до 10 на входе. В первом методе делаю проверку первого числа, во втором - второго, если все подходит под условие, вызываю метод 'get.Operation()', чтобы произвести операцию над числами, но он почему-то выводит 0.
public class ArabicNumbers {
public static Scanner scanner = new Scanner(System.in);
public static String lineOfCalculation = scanner.nextLine();
public static int firstArabicNumber = 0;
public static int secondArabicNumber = 0;
public void firstArabicNumberToInt() {
String firstNumberToInt = lineOfCalculation.substring(0, 1);
int firstArabicNumber = Integer.parseInt(firstNumberToInt);
if (firstArabicNumber <= 10 && firstArabicNumber > 0) {
System.out.println("Ваше первое число '" + firstArabicNumber
+ "' входит в пределы допустимых значений!");
secondArabicNumberToInt();
} else {
}
}
public static void secondArabicNumberToInt() {
String secondNumberToInt = lineOfCalculation.substring(4, 5);
int secondArabicNumber = Integer.parseInt(secondNumberToInt);
if (secondArabicNumber <= 10 && secondArabicNumber > 0) {
System.out.println("Ваше второе число '" + secondArabicNumber
+ "' входит в пределы допустимых значений!");
getOperation();
} else {
}
}
public static void getOperation() {
char operation = lineOfCalculation.charAt(2);
switch (operation) {
case '+':
System.out.println((firstArabicNumber + secondArabicNumber));
break;
case '-':
System.out.println((firstArabicNumber - secondArabicNumber));
break;
case '*':
System.out.println((firstArabicNumber * secondArabicNumber));
break;
case '/':
System.out.println((firstArabicNumber / secondArabicNumber));
break;
}
}
}
Ответы (1 шт):
Во-первых, если написать вот так:
public static int firstArabicNumber = 0;
...
public void firstArabicNumberToInt() {
String firstNumberToInt = lineOfCalculation.substring(0, 1);
int firstArabicNumber = Integer.parseInt(firstNumberToInt);
То это будут два разных firstArabicNumber - одна глобальная, другая локальная в методе. Поэтому нужно убрать int перед локальной в методе. То же самое и для secondArabicNumber.
А во-вторых, вот эта строчка говорит о том, что арифметический знак во входной строке должен быть на 3 месте (счёт от нуля - 0,1,2), так что проверьте входные данные
char operation = lineOfCalculation.charAt(2);