본문 바로가기
자바과정/Java

Java 실습(스택 : 제네릭) - 10일차

by Parkej 2021. 2. 18.
import static java.lang.System.out;

import java.util.Scanner;

class pullStack<T>{
	private T[] s;
	private int cnt;

	@SuppressWarnings("unchecked")
	public pullStack() {
		cnt = 0;
		s = (T[]) new Object[5]; // 값을 받아올때 아예 오브젝트 형태로 받아오게 함.
		// s = new S[]; 로 하면 배열을 만들 때 구성 요소 유형을 알지 못하기때문에 만들지 못했다.
	}

	public void push(T n) {
		s[cnt++] = n;
	}

	public T pop() {
		return s[--cnt];
	}

	public void print() {
		for(T a:s) {
			out.println(a);
		}
	}

	public boolean sizeEmpty() {
		return cnt == 0;
	}

	public boolean sizeFull() {
		return cnt == 5;
	}

}
public class MyStack {	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		pullStack<Integer> stack = new pullStack<>(); 
		while(true) {
			System.out.print("1. push 2. pop 3. break : ");
			int a = sc.nextInt();
			if(a==1) { // push
				if(stack.sizeFull()) {
					System.out.println("더 이상 push 할 수 없습니다.");
				}
				else {
					System.out.print("push 값 입력 : ");
					stack.push(sc.nextInt());
				}
			}

			else if(a==2) {
				if(stack.sizeEmpty()) {
					System.out.println("더 이상 pop 할 수 없습니다.");
				}else {
					System.out.print("pop 값 : ");
					System.out.println(stack.pop());	
				}

			}
			else {
				break;
			}

		}
	}
}
반응형

'자바과정 > Java' 카테고리의 다른 글

Java 기초 - 11일차  (0) 2021.02.19
Java 실습(ArrayList & HashMap) - 10일차  (0) 2021.02.18
Java 기초 - 10일차  (0) 2021.02.18
Java 실습(어댑터) - 9일차  (0) 2021.02.17
Java 기초 - 8일차  (0) 2021.02.17

댓글