Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 1 год назад.
Есть калькулятор на java, но для него нужны особые условия:
Калькулятор умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: a + b, a - b, a * b, a / b. Данные передаются в одну строку! Решения, в которых каждое число и арифмитеческая операция передаются с новой строки считаются неверными.
Калькулятор умеет работать как с арабскими (1,2,3,4,5…), так и с римскими (I,II,III,IV,V…) числами
(Пример:
Input: 1 + 2; Output: 3;
Input: VI / III; Output: II)
Калькулятор должен принимать на вход числа от 1 до 10 включительно, не более. На выходе числа не ограничиваются по величине и могут быть любыми.
Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен выбросить исключение и прекратить свою работу.
Как эти пункты возможно реализовать в данном коде?
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;
}
}
Как эти пункты возможно реализовать в данном коде?
В данном коде числа вводятся последовательно из командной строки, также отдельно вводится знак. Эта задача намного проще.
Поэтому вопрос нужно ставить по-другому, что можно взять из этого кода для реализации вашей задачи.
А взять можно принципы ввода данныхscanner.next()
и метод calc(int num1, int num2, char operation)
для определения знака операции.
Остальное всё нужно писать. Получать строку, парсить, проверять на условия.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как можно вызвать нужный конструктор у класса Sender, когда мы не знаем какой именно передаем Device через цикл?
Для тренировки пишу простенький таймер на Vuejs Столкнулся с ошибкой при которой window