Я пытаюсь найти решение для этого в течение нескольких дней, и я не могу понять это. Я пишу программу, которая (в какой-то момент) принимает математические выражения и отображает ответ. Я использую синтаксический анализатор beanshell для этого, но оценка не является проблемой. Когда пользователь нажимает кнопку «Отменить», этот метод должен отменить последний вход (либо операцию (+ - * /), либо номер. Это дает мне ошибки в самое странное время, и я не могу понять, почему. может кто-нибудь помочь? Я хотел бы поблагодарить всех, кто помогает заранее!Анализ математических выражений со строками
public void undo(View v) throws EvalError{
Interpreter interpreter1 = new Interpreter(); // interpreter to evaluate user solution
userExpressionList.remove(userExpressionList.size()-1); // remove last element of userExpressionList
String tempExp3 = "";
if (userExpressionList.size() != 0){
for (String element:userExpressionList) {
tempExp3 = tempExp3 + element;
if (tempExp3.substring(tempExp3.length() - 1).equals("+") || tempExp3.substring(tempExp3.length() - 1).equals("-") ||
tempExp3.substring(tempExp3.length() - 1).equals("*") || tempExp3.substring(tempExp3.length() - 1).equals("/")) {
displaySolution = (Double)interpreter1.eval(tempExp3.substring(0, tempExp3.length() - 2));
userSolution = tempExp3.substring(tempExp3.length() - 1);
}
else {
displaySolution = (Double) interpreter1.eval(tempExp3.substring(0, tempExp3.length() - 1));
userSolution = "";
}
Log.i("tempExp3", tempExp3);
Log.i("displaySolution", displaySolution.toString());
}
textViewUserSolution.setText(displaySolution.toString());
}
else {
clear(findViewById(R.id.clearButton));
textViewUserSolution.setText("");
}
Log.i("isExpectingNumber before invert", String.valueOf(isExpectingNumber));
isExpectingNumber = !isExpectingNumber;
Log.i("isExpectingNumber after invert", String.valueOf(isExpectingNumber));
textViewUserExpression.setText(tempExp3);
}
Если вам нужна дополнительная информация, пожалуйста, обращайтесь. Я очень признателен за любую помощь вы, ребята, можете предложить.
Какие ошибки это дает вам и когда? – codeMagic
userExpressionList.remove (userExpressionList.size() - 1) должен быть защищен userExpressionList.size()> 0. – laune
Вы подтвердили, что список, имеющий значение – newuser