새소식

인기 검색어

비트교육_단기과정

Generic Memory

  • -
    package week_2;
    
    import java.util.Scanner;
    
    public class MemoryExe {
    
        public static void main(String[] args) {
            int num;
            Scanner sc = new Scanner(System.in);
            // Memory mr = null;
            while (true) {
                System.out.println("입력할 값의 타입을 정하시오");
                System.out.println("1.INT    2.String     ==>");
                num = sc.nextInt();
    
                System.out.print("1. 스택   2. 큐   => ");
                int num2 = sc.nextInt();
                if (num == 1) {// 입력값이 int
                    if (num2 == 1) {
                        Memory<Integer> mr = new MyStack<Integer>(new Integer[5]);
                        mainExe(mr, sc, num);
                    } else {
                        Memory<Integer> mr = new MyQueue<Integer>(new Integer[5]);
                        mainExe(mr, sc, num);
                    }
                } else {// 입력값이 String
                    if (num2 == 1) {
                        Memory<String> mr = new MyStack<String>(new String[5]);
                        mainExe(mr, sc, num);
                    } else {
                        Memory<String> mr = new MyQueue<String>(new String[5]);
                        mainExe(mr, sc, num);
                    }
                }
            }
        }
    
        public static void mainExe(Memory mr, Scanner sc, int num) {
            outwhile (true) {
                System.out.print("1. push   2. pop  3. 나가기 => ");
                int value = sc.nextInt();
                switch (value) {
                case 1:
                    System.out.print("값을 입력하시오 : ");
                    if (num == 1) {
                        mr.push(sc.nextInt());
                    } else {
                        mr.push(sc.next());
                    }
                    break;
                case 2:
                    System.out.println("출력값 : " + mr.pop());
                    break;
                case 3:
                    break out;
                default:
                    System.out.println("형식에 맞지않습니다");
                    break;
                }
            }
        }
    }
 
cs
package week_2;
 
public class MyStack<T> extends Memory<T> {
 
    public MyStack(T[] values) {
        super(values);
    }
 
    @Override
    public T pop() {
        if (cnt > 0) {
            return values[--cnt];
        }
        return null;
    }
 
}
 
cs
package week_2;
 
public abstract class Memory<T> {
 
    protected T[] values;
    protected int cnt;
 
    public Memory(T[] values) {
        this.values = values;
    }
 
    public final void push(T i) {// override 금지
        if (cnt < values.length) {
            values[cnt++= i;
        } else {
            System.out.println("여유공간이 없습니다");
        }
    };
 
    public abstract T pop();
 
}
 
 
cs
package week_2;
 
public class MyQueue<T> extends Memory<T> {
 
    public MyQueue(T[] values) {
        super(values);
    }
 
    @Override
    public T pop() {
        if (cnt > 0) {
            T value = values[0];
            for (int i = 0; i < values.length - 1; i++) {
                values[i] = values[i + 1];
            }
            cnt--;
            return value;
        } else
            return null;
    }
}
 
cs
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.