Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код на Java

dsf df Знаток (451), открыт 2 недели назад
Делаю калькулятор, Есть код:

import java.util.Scanner;

public class Calculator {
static Scanner scanner = new Scanner( System.in );

public static void main(String[] args) {
int num1 = getInt();
int num2 = getInt();
char operation = getOperation();
int result = calc(num1,num2,operation);
System.out.println("Результат операции: "+result);
}

public static int getInt(){
System.out.println("Введите число:");
int num;
if(scanner.hasNextInt()){
num = scanner.nextInt();
} else {
System.out.println("Вы допустили ошибку при вводе числа. Попробуйте еще раз.");
scanner.next ();//рекурсия
num = getInt();
}
return num;
}

public static char getOperation(){
System.out.println("Введите операцию:");
char operation;
if(scanner.hasNext()){
operation = scanner.next ().charAt(0);
} else {
System.out.println("Вы допустили ошибку при вводе операции. Попробуйте еще раз.");
scanner.next ();//рекурсия
operation = getOperation();
}
return operation;
}

public static int calc(int num1, int num2, char operation){
int result;
switch (operation){
case '+':
result = num1+num2;
break;
case '-':
result = num1-num2;
break;
case '*':
result = num1*num2;
break;
case '/':
result = num1/num2;
break;
default:
System.out.println("Операция не распознана. Повторите ввод.");
result = calc(num1, num2, getOperation());//рекурсия
}
return result;
}
}

Он по очереди собирает данные, как сделать чтобы собирал данные 1 строчкой, то есть чтобы спрашивал арефметическое значение?
2 ответа
Sergio 2.1 Оракул (67198) 2 недели назад
 import java.util.Scanner; 

public class Calculator {
static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
System.out.println("Введите выражение (например, 2 + 2):");
String input = scanner.nextLine();

try {
String[] parts = input.split(" ");
if (parts.length != 3) {
System.out.println("Ошибка формата. Используйте: число операция число");
return;
}

int num1 = Integer.parseInt(parts[0]);
char operation = parts[1].charAt(0);
int num2 = Integer.parseInt(parts[2]);

int result = calc(num1, num2, operation);
System.out.println("Результат операции: " + result);
} catch (NumberFormatException e) {
System.out.println("Ошибка: Введите корректные числа");
} catch (Exception e) {
System.out.println("Произошла ошибка: " + e.getMessage());
}
}

public static int calc(int num1, int num2, char operation) {
int result;
switch (operation) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == 0) {
throw new ArithmeticException("Деление на ноль невозможно");
}
result = num1 / num2;
break;
default:
throw new IllegalArgumentException("Неподдерживаемая операция: " + operation);
}
return result;
}
}
dsf dfЗнаток (451) 2 недели назад
Что то не получается:
> Введите выражение (например, 2 + 3):
2+3
Exception in thread "main" java.lang.NumberFormatException: For input string: "2+3"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:661)
at java.base/java.lang.Integer.parseInt(Integer.java:777)
at Calculator.main(Calculator.java:15)
dsf dfЗнаток (451) 2 недели назад
О, все понял, спасибо большое. Пробел...
Александр Искусственный Интеллект (301506) 2 недели назад
твоя программа совершено не понимает порядок выполнения математических операций...
Похожие вопросы