public abstract class MyMemory {
protected int []arr;
protected int pos;
public MyMemory() {
this(5); // 배열 길이를 안정해주면 5
}
public MyMemory(int num) {
arr = new int[num]; // 배열 생성
pos = 0; // 배열 위치
}
public void push(int data) {
arr[pos++] = data; // arr[0]에 값을 넣고 후에 1증가
}
public abstract int pop(); // 추상메소드 생성
}
public class MyStack extends MyMemory{
@Override
public int pop() {
return arr[--pos]; // 값을 1 빼고 리턴
}
}
public class MyQueue extends MyMemory {
private int front;
public MyQueue() {
front = 0; // 시작 값을 구하기 위한 변수
}
@Override
public int pop() {
return arr[front++]; // arr[0] 출력 후 1증가
}
}
import java.util.Scanner;
public class MainExam {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MyStack ms = new MyStack();
MyQueue mq = new MyQueue();
MyMemory mm = null;
do {
System.out.println("1.Stack 2.Queue 3.Exit =>");
int num = sc.nextInt();
// 동적바인딩 선택
if (num == 1) {
mm = ms; // MyMemory = MyStack
} else if (num == 2)
mm = mq; // MyMemory = MyQueue
else
break;
// 활용
while (true) {
System.out.println("1.push 2.pop 3.back => ");
int num1 = sc.nextInt();
if (num1 == 1)
mm.push(sc.nextInt()); // 입력 값을 Stack or Queue에 넣음
else if (num1 == 2)
System.out.println(mm.pop());
else
break;
}
} while (true);
}
}
반응형
'Java > eclipse 연습' 카테고리의 다른 글
(JavaScript)현재 시간(1초마다 갱신) (0) | 2020.08.20 |
---|---|
(Java)Thread Synchronization - ATM (0) | 2020.08.13 |
(Java)for문 사각형접기/ 이중for문 구구단 (0) | 2020.08.04 |
(Java)switch문을 이용한 간단한 연산기 (0) | 2020.08.04 |
(Java)if문을 이용한 간단한 연산기 (0) | 2020.08.04 |