Problem:
問題 2

　加減乗除の計算をする電卓プログラムを作りなさい．

　入力データの各行には数と記号 +, -, *, /, = のどれか1つが交互に書いてある．
１行目は数である．
演算 +, -, *, / の優先順位（乗除算 *, / を加減算 +, - よりも先に計算すること）は考えず，入力の順序で計算し，= の行になったら，計算結果を出力する．
入力データの数値は108以下の正の整数とする．
計算中および計算結果は，0または負の数になることもあるが
-108〜108 の範囲は超えない．
割り算は切り捨てとする．
したがって，100/3*3= は 99 になる．

　出力ファイルにおいては，
出力の最後の行にも改行コードを入れること．

入出力例

入力例１

1
+
1
=

出力例１

2

入力例２

10
-
21
*
5
=

出力例２

-55

入力例３

100
/
3
*
3
=

出力例３

99

問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。

Solution in JAVA (judge verdict: Accepted)


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

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Stack<String> s = new Stack<>();
		s.push(sc.next());
		while(sc.hasNext()) {
			String str = sc.next();
			if(str.equals("=")) {
				System.out.println(s.pop());
				break;
			}
			if(!Character.isDigit(str.charAt(0))) {
				s.push(str);
			}
				
			else {
				String ss = s.pop();
				int a = Integer.parseInt(s.pop());
				int b = 0;
				if(ss.equals("+"))
					b = a + Integer.parseInt(str);
				if(ss.equals("-"))
					b = a - Integer.parseInt(str);
				if(ss.equals("*"))
					b = a * Integer.parseInt(str);
				if(ss.equals("/"))
					b = a / Integer.parseInt(str);
				s.push(String.valueOf(b));
			}
			
		}
	}
}