2014-11-26 4 views
0

Вот код, я работаю (его часть CalculatorTester класса, который является продолжением калькулятора класса):Как уменьшить повторяемость этого метода?

if (choice == 1) //Addition 
    { 
     System.out.println("Math Operation: Addition."); 
     System.out.println("Enter First Number."); 
     int a = in.nextInt(); 
     System.out.println("Enter Second Number."); 
     int b = in.nextInt(); 
     int endValue = c1.addition(a, b); 
     System.out.println("The Sum is: " + endValue + "."); 
    } 
    else if (choice == 2) 
    { 
      ...More Code Here... 
    }//end of if() 

Метод добавления внутри Калькулятор объекта:

public int addition(int a, int b) 
    { 
     endValue = a + b; 
     return endValue; 
    }//end of method addition() 

Как могу ли я уменьшить повторяемость утверждений if, поскольку у меня всего 5 из-за количества различных операций, которые вы можете выбрать?

Спасибо!

+1

Я не вижу здесь много повторяющегося кода. Единственное, что я могу придумать, это иметь способ получить два ввода номера, если все входные коды одинаковы. то есть код, начинающийся с 'System.out.println (« Введите первый номер »); 'и заканчивается на' int b = in.nextInt(); ', возможно, помещая это в метод, который возвращает hm массив int [2]? –

+0

Хорошо, я просто видел, что вы делаете то же самое снова и снова в утверждениях if. Простое изменение имени операции –

+0

Поскольку ваш текстовый вывод будет отличаться в зависимости от оператора, на самом деле там не так много избыточности. Я бы пошел наоборот и обнял это с помощью более конкретных сообщений, таких как «Ввести второй фактор» «Ввести добавление» ... Таким образом, вы также можете проверить деление на ноль и повторное приглашение. – Thilo

ответ

1

Спросите чисел до и дают результаты после:

//user selects operation 
System.out.println("Enter First Number."); 
int a = in.nextInt(); 
System.out.println("Enter Second Number."); 
int b = in.nextInt(); 

int endValue; 
if (choice == 1) //Addition 
    endValue = c1.addition(a, b); 
else if (choice == 2) 
    endValue = c1.subtraction(a, b); 
else 
    //throw exception since there was no endValue calculated 

System.out.println("The result is: " + endValue + "."); 

Вы также можете использовать switch/case вместо if/if else/else.

+0

Обратите внимание, что теперь он говорит «результат» вместо «sum», что уменьшает пользовательский интерфейс. И пять операций упомянуты, я думаю, один из них может быть «sqrt» или «sqr» или «negate», ни один из которых не нуждается в двух операндах. – Thilo

1

Используйте инструкцию switch.

switch(choice) { 
case 1: 
//code for if the choice 1 
break; 
case 2: 
//code for if the choice is 2 
break; 

//do this for the rest of your choices 

} 

Коммутатор - это в основном куча утверждений if и else if.

Не забудьте добавить оператор break, если вы этого не сделаете, он продолжит выполнение, пока не достигнет одного. (Так называемый "проваливаться")