重複の可能性:
文字列形式で与えられた数式の評価
私たちの任務で助けが必要です。演算子の優先順位を使用して計算するプログラムを作成しようとしています。可能であれば、配列リスト内の式を計算したいと考えています。例のために。[4+2x2-3] は最初に 2x2 を計算する必要があるため、結果は [4+4-3] などになります... 私のプログラムは最初の操作のみを計算しますが、他の操作を繰り返すことはできませんでした。また、最も優先度の高い演算子が最初にある場合にのみ計算されます。元。[2^1-2] は [2-2] になります。しかし、[2-1^2] の場合は何もしません。助けてくれてありがとう
List<String> subroutine = new CopyOnWriteArrayList<String>(input);
for(String i : subroutine)
{
switch(currentstate)
{
case q0:
if(isDigit(i))
{
currentstate = q1;
}
break;
case q1:
if(i.equals("^"))
{
maxPriority = i;
int index = subroutine.indexOf(maxPriority);
int num1 = Integer.parseInt(subroutine.get(index-1));
int num2 = Integer.parseInt(subroutine.get(index+1));
int total = (int) Math.pow(num1, num2);
String stringTotal = Integer.toString(total);
String addToExp = subroutine.set(index, stringTotal);
int indexAddToExp = subroutine.indexOf(stringTotal);
subroutine.remove(indexAddToExp+1);
subroutine.remove(indexAddToExp-1);
System.out.println(subroutine);
}
else if( (i.equals("x") || i.equals("/")) && (!input.contains("^")) )
{
if(i.equals("x"))
{
maxPriority = i;
int index = subroutine.indexOf(maxPriority);
int num1 = Integer.parseInt(subroutine.get(index-1));
int num2 = Integer.parseInt(subroutine.get(index+1));
int total = num1 * num2;
String stringTotal = Integer.toString(total);
String addToExp = subroutine.set(index, stringTotal);
int indexAddToExp = subroutine.indexOf(stringTotal);
subroutine.remove(indexAddToExp+1);
subroutine.remove(indexAddToExp-1);
}