baru003のブログ

baruの雑記兼備忘録

AOJ 0087

・問題リンクStrange Mathematical Expression

・コメント
久しぶりに自主的にプログラミングをしました。RPNに関しての知識がちょうど入ったばかりだったものでついでに実装してみました。最近は少し忙しくなかなかプログラミングを出来る状態ではないのですが少しずつ続けていけれたらと思います。

・ソース

import java.util.Scanner;
import java.util.Stack;

public class P0087 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		/* 入力の終わりまで読み込む */
		while (sc.hasNext()) {
			/* double型のスタックを用意する */
			Stack<Double> stack = new Stack<Double>();
			/* String型として入力を受け付け,それをスペースで区切って配列に格納する */
			String str[] = sc.nextLine().split(" ");
			/*
			 * 演算子が出てくるまでスタックに格納し 演算子が出てきたらスタックから取り出し演算を行い、 演算結果を再びスタックにしまう
			 */
			int i = 0;
			while (i < str.length) {
				if (str[i].equals("+")) {
					double y = stack.pop();
					double x = stack.pop();
					stack.push(x + y);
				} else if (str[i].equals("-")) {
					double y = stack.pop();
					double x = stack.pop();
					stack.push(x - y);
				} else if (str[i].equals("*")) {
					double y = stack.pop();
					double x = stack.pop();
					stack.push(x * y);
				} else if (str[i].equals("/")) {
					double y = stack.pop();
					double x = stack.pop();
					stack.push(x / y);
				} else {
					stack.push(Double.parseDouble(str[i]));
				}
				i++;
			}
			/* 演算結果を出力して終了 */
			System.out.println(stack.pop());
		}
	}
}