Привет, меня зовут Алексей, и я хочу рассказать тебе о своем опыте в создании простейшего калькулятора на языке Java, который выполняет операции сложения, вычитания, умножения и деления с двумя числами․
Первое, что я сделал, это определил структуру калькулятора․ У меня был класс Calculator, который содержит метод calculate, принимающий строку с математическим выражением в формате ″число оператор число″․
java
public class Calculator {
public static int calculate(String expression) {
// код калькулятора
}
}
Затем я написал логику для выполнения операций над числами․ Важно отметить, что калькулятор работает только с целыми числами, поэтому я использовал тип int для хранения результатов операций․java
public static int calculate(String expression) {
String[] tokens expression․split(″ ″);
int firstNumber Integer․parseInt(tokens[0]);
int secondNumber Integer․parseInt(tokens[2]);
switch(tokens[1]) {
case ″ ″⁚
return firstNumber secondNumber;
case ″-″⁚
return firstNumber ─ secondNumber;
case ″*″⁚
return firstNumber * secondNumber;
case ″/»:
return firstNumber / secondNumber;
default⁚
throw new IllegalArgumentException(″Неправильный оператор⁚ ″ tokens[1]);
}
}
Теперь, когда у меня был обычный калькулятор, я решил добавить поддержку работы с римскими числами․ Для этого я создал дополнительный класс RomanNumerals, который содержит методы для преобразования римских чисел в арабские и наоборот․java
public class RomanNumerals {
public static int toArabic(String roman) {
// код преобразования римских чисел в арабские
}
public static String toRoman(int arabic) {
// код преобразования арабских чисел в римские
}
}
Затем я модифицировал метод calculate, чтобы он корректно работал с римскими числами․ Для этого я использовал методы toArabic и toRoman из класса RomanNumerals․java
public static int calculate(String expression) {
String[] tokens expression․split(″ ″);
int firstNumber;
int secondNumber;
if (isRomanNumber(tokens[0]) nn isRomanNumber(tokens[2])) {
firstNumber RomanNumerals․toArabic(tokens[0]);
secondNumber RomanNumerals․toArabic(tokens[2]);
} else {
firstNumber Integer․parseInt(tokens[0]);
secondNumber Integer․parseInt(tokens[2]);
}
switch(tokens[1]) {
case ″ ″⁚
return firstNumber secondNumber;
case ″-″⁚
return firstNumber ─ secondNumber;
case ″*″⁚
return firstNumber * secondNumber;
case ″/»:
return firstNumber / secondNumber;
default⁚
throw new IllegalArgumentException(″Неправильный оператор⁚ ″ tokens[1]);
}
}
Также я добавил методы isRomanNumber и isArabicNumber для определения, является ли строка римским или арабским числом․java
private static boolean isRomanNumber(String str) {
// проверка, является ли строка римским числом
}
private static boolean isArabicNumber(String str) {
// проверка, является ли строка арабским числом
}
Наконец, чтобы ограничить входные числа от 1 до 10, я добавил дополнительные проверки в метод calculate․java
public static int calculate(String expression) {
String[] tokens expression․split(″ ″);
int firstNumber;
int secondNumber;
if (isRomanNumber(tokens[0]) nn isRomanNumber(tokens[2])) {
firstNumber RomanNumerals․toArabic(tokens[0]);
secondNumber RomanNumerals․toArabic(tokens[2]);
} else {
firstNumber Integer․parseInt(tokens[0]);
secondNumber Integer․parseInt(tokens[2]);
}
if (firstNumber < 1 || firstNumber > 10 || secondNumber < 1 || secondNumber > 10) {
throw new IllegalArgumentException(″Числа должны быть от 1 до 10″);
}
switch(tokens[1]) {
case ″ ″⁚
return firstNumber secondNumber;
case ″-″⁚
return firstNumber ⎻ secondNumber;
case ″*″⁚
return firstNumber * secondNumber;
case ″/»:
return firstNumber / secondNumber;
default⁚
throw new IllegalArgumentException(″Неправильный оператор⁚ ″ tokens[1]);
}
}
Теперь мой калькулятор готов к использованию․ Я могу вызывать метод calculate и передавать ему строку с выражением, например ″2 3″ или ″IV * VI″٫ и получать результат операции․ Калькулятор будет работать как с арабскими٫ так и с римскими числами․
Это был мой опыт создания простейшего калькулятора на языке Java․ Я надеюсь, что моя статья поможет тебе разобраться в основах написания калькулятора и в использовании разных типов чисел․ Успехов в твоем программировании!