我試着寫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