我一直在建立一個簡單的公式計算器,並加入了加法和減法。正如你應該知道的那樣,當計算一個方程時,你遵循優先的算術規則,即括號,命令:冪函數,除法,乘法,加減。問題在於加法和減法具有相同的優先級,因此您可以從左到右閱讀它。這是我到目前爲止的代碼:加減BODMAS系統
{
ArrayList<String> equation = java.util.Arrays.asList({"2","-","2","+","5"});
while(equation.contains("+")){
addMe(equation);
}
while(equation.contains("-")){
minusMe(equation);
}
}
public static void addMe(ArrayList<String> numberList){
for (int i = 0, n = numberList.size(); i < n; i++) {
String value = (String) numberList.get(i);
if(value.equals("+")){
String wordBefore = (String) numberList.get(i-1);
String wordAfter = (String) numberList.get(i+1);
System.out.println("This is the word before " + wordBefore);
System.out.println("This is the word after " + wordAfter);
double doubleFromBefore = Double.parseDouble(wordBefore);
double doubleFromAfter = Double.parseDouble(wordAfter);
double answer = doubleFromBefore + doubleFromAfter;
System.out.println("This is the answer: " + answer);
String stringAnswer = String.valueOf(answer);
String newNum2 = value.replace(value, stringAnswer);
numberList.set(i,newNum2);
numberList.remove(i-1);
numberList.remove(i);
break;
}
}
}
的minusMe方法是完全一樣的方法ADDME除了以「 - 」相關的地方。我遇到的問題是一次讀取從左到右的一個項目的方程式,並執行加法或減法方法。理想情況下,我認爲我需要將我的2個while循環與迭代器結合使用來解決問題,但是我的嘗試沒有奏效。任何想法,如果這將解決我的問題?如果是這樣,請提供修正循環。
問候
工程,但我怎麼會這樣做乘法?如果這是很多工作,不要打擾,因爲這到目前爲止與我的代碼一起工作。只是在等待另一個問題的答覆,看看這是否也適用於此。 – Digitalwolf
編輯答案。一探究竟。 –
這根本不處理除法,模數或冪運算,也沒有正確實現運算符優先級。考慮例如1 + 2 * 3。 Downvote。 – EJP