Короче, я уже запарился разбираться с Enum.. пишу какой-то сс..ый калькулятор уже второй день..
Есть два класса, мейн и класс операций. по задумке, чтобы уйти от использования свитчей, нужно в перечислениях операций реализовать метод
getResult.
В основном классе я считываю сканером два значения и оператор (тип
String, с
char не хочу извращаться, да и много лишнего кода из-за него будет). Далее мне как-то надо вызвать тот метод
getResult, чтобы вывести консоль. Текущая реализация с ошибкой. Не знаю, что делать. Пытался привести к типу
Operations строковое значение оператора - ошибка, писал похожую конструкцию
Operations o = o.getResult(arg1, arg2); - никак.
Примеры гуглил, было похожее что-то, но там просто по-очереди вызывался метод типа моего
getResult, но мне не подходит, т.к. оператор заранее не известен.. А то и вообще какие-то громоздкие конструкции.
1 из 2 | Trulala |
Run.javaimport java.util.Scanner;
public class Run {
private static double argument1;
private static double argument2;
private String operator;
private static String result;
public static void main(String[] args) {
Run app = new Run();
app.runApp();
}
public void runApp() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter your first value:");
argument1 = sc.nextDouble();
System.out.println("Enter your second value:");
argument2 = sc.nextDouble();
System.out.println("Enter operation: ");
operator = sc.next();
sc.close();
// Здесь трабла, хз как правильно вызвать метод
result = operator.getResult(argument1, argument2);
System.out.println("Result: " + result);
}
}
Operations.javapublic enum Operations {
PLUS("+") {
@Override
public double getResult(double arg1, double arg2) {
return arg1 + arg2;
}
},
MINUS("-") {
@Override
public double getResult(double arg1, double arg2) {
return arg1 - arg2;
}
},
DIVIDE("/") {
@Override
public double getResult(double arg1, double arg2) {
return arg1 / arg2;
}
},
MULTIPLY("*") {
@Override
public double getResult(double arg1, double arg2) {
return arg1 * arg2;
}
};
public String operator;
private Operations(String operator) {
this.operator = operator;
}
public abstract double getResult(double arg1, double arg2);
}
И еще по поводу @Override: где-то он используется, где-то нет (в разных реализациях одного и того же кода) - здесь оно надо? До этого у меня было проще, но ошибка все равно оставалась, проблемы с типами. Пока пробовал разные варианты кода, допогромировал до такого состояния
__________________