#android #string
#Android #строка
Вопрос:
Я пытаюсь создать строковый калькулятор в Android, вот моя функция;
public void hesapla(View view) {
islemString = Islem.getText().toString();
List<String> operatorList = new ArrayList<String>();
List<String> operandList = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(islemString, " -*/()", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (" -/*()".contains(token)) {
operatorList.add(token);
} else {
operandList.add(token);
}
}
for(int i=0; i>=20; i ) {
if (operatorList.get(i) == "(") {
int a=0;
while(operatorList.get(a) == ")"){
if(operatorList.get(a 1) == " "){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) Double.parseDouble(String.valueOf(operandList.get(i 1)));
}
if(operatorList.get(a 1) == "-"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) - Double.parseDouble(String.valueOf(operandList.get(i 1)));
}
if(operatorList.get(a 1) == "*"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) * Double.parseDouble(String.valueOf(operandList.get(i 1)));
}
if(operatorList.get(a 1) == "/"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) / Double.parseDouble(String.valueOf(operandList.get(i 1)));
}
a ;
}
}
}
При нажатии кнопки Рассчитать я получаю операнд в список, а оператор — в список каждого из них. Но я не могу снова читать.
if (operatorList.get(i) == "(")
Я пытаюсь это сделать, но где моя ошибка? Как я могу? Спасибо.
Комментарии:
1. проверьте мой ответ
Ответ №1:
При Java/Android
сравнении объектов следует использовать equals()
вместо ==
(во избежание этого NullPointerException
лучше всего сначала использовать константы при сравнении String
).
Пример:
if ("(".equals(operatorList.get(i)))
Ответ №2:
У вас есть for
цикл, который никогда не будет выполняться
for(int i=0; i>=20; i ) {
if (operatorList.get(i) == "(") {
Вы начинаете с i=0
и условием для выполнения цикла является i>=20
, что неверно. Попробуйте
for(int i=0; i<=20; i ) {
if (operatorList.get(i) == "(") {
а затем посмотрите, продвигается ли ваш код вперед
Ответ №3:
Я думаю, вам нужно изменить код при сравнении строки,
if (operatorList.get(i).equals("(")))
И изменения тоже для других