0
  static String convert(String exp)
  {
    String result="";
    Stack s1=new Stack();
     for(int i=0;i<exp.length();i++)
      {
       if(Character.isDigit(exp.charAt(i)))
       {{
       result=result+exp.charAt(i);
       continue;
       }
       else
       {
        if(s1.empty())
        {
         s1.push(exp.charAt(i));
          continue;
        }
        else
        {
         if(check(exp.charAt(i))>check(exp.charAt(i-1)))
         s1.push(exp.charAt(i));
         else
        {
        while(!s1.empty())
        {
        String a=s1.pop().toString();
        result=result+a;
        }
        s1.push(exp.charAt(i));
        }
       }
      }
     }
    while(!s1.empty())
    {
    String p=s1.pop().toString();
    result=result+p;
    }
    return result;
  }

    static int check(char c)
    {
    switch (c) {
            case '+':
            case '-':
                return 0;
            case '*':
            case '/':
                return 1;
            case '^':
                return 2;
            default:
                throw new IllegalArgumentException("Operator unknown: " + c);
            }
    }

式を中置から後置に変換するコードを次に示します。このコードは 2 つのオペランドだけで正常に動作します。6+9*7 のような 2 つ以上のオペランドの場合、演算子の優先度を設定する別の方法で指定した IllegalArgumentException が表示されます。どこが間違っているのかを明確にするのを手伝ってください。

4

2 に答える 2