私は単純な数式計算機を作成しており、足し算と引き算で行き詰まっています。ご存知のように、方程式を計算するときは、優先順位の算術規則に従います。つまり、括弧、順序:累乗関数、除算、乗算、加算、および減算です。問題は、足し算と引き算が同じ優先順位で行われるため、左から右に読むことができることです。これまでの私のコードは次のとおりです。
{
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 メソッドとまったく同じです。私が抱えている問題は、一度に1つのアイテムを左から右に読み取って、加算または減算のいずれかの方法を実行することです。理想的には、問題を解決するために 2 つの while ループをイテレータと組み合わせる必要があると思いますが、私の試みはうまくいきませんでした。これが私の問題を解決するかどうかについての考えはありますか? もしそうなら、修正されたループを提供してください。
よろしく