2013-06-27 4 views
0

Так что, в основном, я пытаюсь создать простой java-калькулятор для следующих функций, но кажется, что мои функции не выполняются так, как они предполагаются (т. Е. + Не добавлять, а не вычитать). Был бы признателен за помощь :)необходим простой калькулятор java

if (ope == "+") { 
     //add 
    } else if (ope == "-") { 
     //subtract 
    } else if (ope == "*") { 
     //multiply 
    } else if (ope == "/") { 
     //divide 
    } 
} 
+1

(Также, пожалуйста, прочитайте http://tinyurl.com/so-list и http://tinyurl.com/so-hints) –

+0

Используйте Равных() метод сравнения строк вместо '==' – Siva

+0

Stack Overflow совместно редактируется. Если у вас возникла проблема с редактированием вашего вопроса, Stack Overflow может быть не для вас. –

ответ

4

Некорректное String сравнение, вместо:

if (ope == "+") { 
} else if (ope == "-") { 
} else if (ope == "*") { 
} else if (ope == "/") { 

вы должны иметь:

if ("+".equals(ope)) { 
} else if ("-".equals(ope)) { 
} else if ("*".equals(ope)) { 
} else if ("/".equals(ope)) { 
+0

Спасибо Адаму, который исправил проблемы с операцией, хотя кажется, что после первого запуска (что правильно) любая другая операция после этого дает недопустимые выходы. Не могли бы вы узнать, где источник этой проблемы? edit: похоже, это может быть связано с функцией clear, не уверен, что она вызывает ее: S – Ted

0

В Java SE 7 и более поздних, вы можете использовать строку объект в выражении оператора switch. More info

if(ope != null) 
{ 
switch(ope) 
{ 
    case "+" : do1(); break; 
    case "-" : do2(); break; 
    case "*" : do3(); break; 
    case "/" : do4(); break; 
    default : doDefault(); break; 
} 
} 

Более подробную информацию о String comparison

+0

Я лично ненавижу эту функцию, потому что она приводит к жестко закодированным значениям. Гораздо лучше определить возможные значения в «перечислении», и они также могут быть использованы в операторе switch (и проверены компилятором) – Esteve