はなたの日記

プログラミング(C言語)の勉強をしています。超初心者です。

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());
	}
}

まだ少ししか勉強してないので、クラスの良さがあまり分かりません。
グローバル変数を考えなくても良いぐらいでしょうか。もっと勉強しようと思います。