我试着写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