-3

後置式の入力を受け取り、オペランドが有効であることを評価し、それらのオペランドに演算子を適用するプログラムを作成しようとしています。

Scanner入力を受け取るクラスを認識していますが、これには問題はありません。現在私は持っています:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    String equation;

    System.out.println("Please enter a postfix expression:");

    equation = scan.nextLine();

ここで、ユーザーが入力した内容を処理する必要があります。私はこの問題のより簡単な解決策を求めています。

4

1 に答える 1

2

を使用しjava.util.Stackます。以下の例は、 の使用方法を示すためのものですStack。後置式の有効性はチェックされません。

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    Stack<Integer> stack = new Stack<Integer>();

    System.out.println("Please enter a postfix expression:");

    String equation = scan.nextLine();

    String[] terms = equation.split(" ");

    for (String s : terms ) {

        if (s.equals("+")) stack.push(stack.pop() + stack.pop());
        else if (s.equals("-")) stack.push(-stack.pop() + stack.pop());
        else if (s.equals("*")) stack.push(stack.pop() * stack.pop());
        else if (s.equals("/")) {
            int a = stack.pop(); 
            int b = stack.pop(); 
            stack.push( b/a );
        }
        else stack.push(Integer.parseInt(s));
    }
    System.out.println("result: " + stack.pop());
}       

より複雑な例については、http://kevinyavno.com/blog/?p=52をご覧ください。

于 2015-10-22T13:59:38.493 に答える