подскажи пожалуйста. почему у меня вылазит NumberFormatException после окончания расчета и при вводе yes. Я же закинул mathExpression = sc.nextLine() в do - while. Получается, что компилятор идет сначала на строку создания объекта с пустым параметром. Где ошибка?
Помогите написать цикл, чтобы при пустом параметре объекта Calculator calc вызывалась фраза "Введите выражение по типу a + b через пробел:" и метод mathExpression = sc.nextLine();
class CalculatorTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String mathExpression;
String userAnswer = "yes";
while (userAnswer.equals("yes")) {
do {
System.out.println("Введите выражение по типу a + b через пробел: ");
mathExpression = sc.nextLine();
} while (mathExpression.equals(" "));
Calculator calc = new Calculator(mathExpression);
System.out.println(calc.calculate());
do {
System.out.print("Do you want to continue? [yes/no]: ");
userAnswer = sc.next();
} while (!userAnswer.equals("yes") && !userAnswer.equals("no"));
}
}
}
Введите выражение по типу a + b через пробел:
6 * 9
54
Do you want to continue? [yes/no]: y
Do you want to continue? [yes/no]: yes
Введите выражение по типу a + b через пробел:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at com.startjava.lesson_2_3.calculator.Calculator.<init>(Calculator.java:24)
at com.startjava.lesson_2_3.calculator.CalculatorTest.main(CalculatorTest.java:15)
Process finished with exit code 1
В классе калькулятор конструктор
public Calculator(String mathExpression) {
String[] arrExpression = mathExpression.split(" ");
firstNumb = Integer.parseInt(arrExpression[0]);
sign = arrExpression[1].charAt(0);
secondNumb = Integer.parseInt(arrExpression[2]);
}
Далее производятся математические действия с примитивами из массива arrExpression
public int calculate() {
switch (sign) {
case '+':
return Math.addExact(firstNumb, secondNumb);
case '-':
return firstNumb - secondNumb;
case '*':
return firstNumb * secondNumb;
case '/':
return firstNumb / secondNumb;
case '^':
return (int) Math.pow(firstNumb, secondNumb);
case '%':
return (firstNumb % secondNumb);
default:
System.out.println("Введи знак мат.операции " + " + " + " - " + " * " + " / " + " ^ " + " % ");
return 0;
}
Calculator? – Agzam Jan 14 '21 at 14:36