Я пытаюсь написать equals
функция переопределения. Я думаю, что я написал правильно, но проблема в том, что разбор выражения. У меня есть тип массива ArrayList<String>
, который требует ввода с клавиатуры, чем оценка результата. Я мог бы сравнить с другой переменной ArrayList<String>
, но как я могу сравнить ArrayList<String>
с String
. Например,простой математический анализ выражений
String expr = "(5 + 3) * 12/3";
ArrayList<String> userInput = new ArrayList<>();
userInput.add("(");
userInput.add("5");
userInput.add(" ");
userInput.add("+");
userInput.add(" ");
userInput.add("3");
.
.
userInput.add("3");
userInput.add(")");
затем преобразовать UserInput в строку затем сравнить с использованием равных Как вы видите, что это слишком долго, когда тест хотел применить. Я использовал для разделения, но он также разбивает комбинированные числа. как 12
к 1
и 2
public fooConstructor(String str)
{
// ArrayList<String> holdAllInputs; it is private member in class
holdAllInputs = new ArrayList<>();
String arr[] = str.split("");
for (String s : arr) {
holdAllInputs.add(s);
}
}
Как вы ожидаете, что не дает нужного результата. Как это можно исправить? Или может кто-то помочь в написании регулярного выражения, чтобы правильно разобрать его по мере необходимости? Как выход я получаю:
(,5, ,+, ,3,), ,*, ,1,2, ,/, ,3
вместо
(,5, ,+, ,3,), ,*, ,12, ,/, ,3
Как вы добавляете 12? 'userInput.add (" 12 ");' или 'userInput.add (" 1 ");' 'userInput.add (" 2 ");'? – Guy
'userInput.add (" 12 ");' @guy – askque