ALDS1_3_A Stack
問題
スタック | アルゴリズムとデータ構造 | Aizu Online Judge
スタックを利用した、逆ポーランド記法の式の計算を実装する問題です。
javaでクラスを勉強し始めたので、スタックをクラスで実装してみました。
import java.util.Scanner; class Stack { private int top; private int[] a; Stack(){ this.top=0; this.a=new int[200]; } void push(int x){ a[top++]=x; } int pop(){ top--; return a[top]; } } class alds_3_a { public static void main(String[] args){ Scanner scan=new Scanner(System.in); Stack S=new Stack(); while(scan.hasNext()){ String str=scan.next(); if(Character.isDigit(str.charAt(0))){ S.push(Integer.parseInt(str)); } else { int a=S.pop(); int b=S.pop(); switch(str.charAt(0)){ case '+':S.push(b+a); break; case '-':S.push(b-a); break; case '*':S.push(b*a); break; } } } System.out.println(S.pop()); } }
まだ少ししか勉強してないので、クラスの良さがあまり分かりません。
グローバル変数を考えなくても良いぐらいでしょうか。もっと勉強しようと思います。