package stack;

import java.util.Scanner;

// .idea 폴더 : 프로젝트의 구조 정보 등 프로젝트 관련 메타데이터가 들어 있음
// iml 파일 : 인텔리제이 모듈 구성에 대해 xml 형태로 기술해 놓은 파일
// @override: 상속을 받아서 메서드를 만들때 모든 메서드는 같은걸 상속받게되는데 이때 맘에 들지않는 것을 내가 원하는대로 재정의하겠다는 의미

/*
static : 이미 객체화 되어 바로 사용가능
non-static : 아직 객체화되지 않아 new 키워드를 통해 생성한 후 사용 가능
 */

public class Main {

    static int[] arr;
    static int count,incnt;

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        count = input.nextInt(); // 입력받은 값을 INT 로 받겠다는 의미 ( next(), nextByte(), nextFloat(), nextLine() 등이 존재 )

        arr = new int[count]; // 초기값 0으로 할당됨

        incnt = 0;

        push(5);
        push(1);
        push(3);
        push(9);

        for(int i=0; i<incnt; i++){
            System.out.print(arr[i]+" ");
        }

        System.out.println(pop());
        System.out.println(pop());
        System.out.println(pop());
        System.out.println(pop());
    }

    public static void push(int input){
        if(incnt == count){
            System.out.println("스택이 초과하였습니다.\n");
            throw new SecurityException();
        }else{
            arr[incnt++] = input;
        }
    }

    /*
    throw : 에러를 고의로 발생시킴
    throws : 자신을 호출한 상위 메소드로 에러를 던지는 역할
     */
    public static int pop(){
        if(incnt <= 0){
            System.out.println("빈 스택입니다.");
            throw new SecurityException();
        }
        return arr[incnt--];
    }
}

'JAVA' 카테고리의 다른 글

String 중간 공백기준으로 배열 만들기  (0) 2022.07.06
Hamcrest, Matcher란?  (0) 2022.07.03
Optional 이란?  (0) 2022.07.02
상속을 응용한 스택 구현  (0) 2021.10.07
배열 큐  (0) 2021.10.07

+ Recent posts