HIGH JAVA Stack 연습문제

어뮤즈온·2021년 1월 18일
0

고급자바

목록 보기
5/7
post-custom-banner

웹 브라우저의 앞으로 가기, 뒤로 가기 기능 구현해 보기(스택 이용)

class Browser{
	private LinkedList<String> back; //이전 방문 내역이 저장될 스택
	private LinkedList<String> forward; //다음 방문 내역이 저장될 스택
	private String currentURL; //현재 페이지

	//생성자
	public Browser(){
		back = new LinkedList<>();
		forward = new LinkedList<>();
		currentURL = "";
	}

	//사이트를 방문하는 메서드 ==> 매개변수에 방문한 url이 저장
	public void goURL(String url){
		System.out.println(url + "사이트로 접속합니다.");
		if(currentURL != null && !"".equals(currentURL)){
			back.push(currentURL);
		}
		currentURL = url;
	}

	//뒤로가기
	public void goBack(){
		//isEmpty() ==> list가 비어있으면 true, 그렇지 않으면 false
		if(!back.isEmpty()){ // 비어있지 않으면
			// 현재 URL을 forward 스택에 추가하고
			forward.push(currentURL);
			// back 스택에서 꺼내온 값을 현재 URL로 한다.
			currentURL = back.pop();
		}
	}

	//앞으로 가기
	public void goForward(){
		if(!forward.isEmpty()){
			// 현재 URL을 back에 추가
			back.push(currentURL);
			// forward에서 꺼내온 값을 현재 URL로 한다.
			currentURL = forward.pop();
		}
	}

	//방문 기록 확인하기
	public void history(){
		System.out.println();
		System.out.println("----------------------");
		System.out.println("    방  문  기  록");
		System.out.println("----------------------");
		System.out.println("back     ==> " + back);
		System.out.println("현재     ==> " + currentURL);
		System.out.println("forward  ==> " + forward);
		System.out.println();
	}
}

//-----------------------------------------------------

public class StackTest {
	
	public static void main(String[] args) {
		Browser b = new Browser();
		
		b.goURL("1. 네이버");
		b.history();
		
		b.goURL("2. 야후");
		b.history();
		
		b.goURL("3. 구글");
		b.history();
		
		b.goURL("4. 다음");
		b.history();
		
		System.out.println("뒤로가기 후...");
		b.goBack();
		b.history();
		
		System.out.println("뒤로가기 후...");
		b.goBack();
		b.history();
		
		System.out.println("앞으로 가기 후...");
		b.goForward();
		b.history();
		
		System.out.println("새로운 사이트 접속 후...");
		b.goURL("5. 네이트");
		b.history();
	}
	
}

Console

1. 네이버사이트로 접속합니다.

----------------------
    방  문  기  록
----------------------
back     ==> []
현재     ==> 1. 네이버
forward  ==> []

2. 야후사이트로 접속합니다.

----------------------
    방  문  기  록
----------------------
back     ==> [1. 네이버]
현재     ==> 2. 야후
forward  ==> []

3. 구글사이트로 접속합니다.

----------------------
    방  문  기  록
----------------------
back     ==> [2. 야후, 1. 네이버]
현재     ==> 3. 구글
forward  ==> []

4. 다음사이트로 접속합니다.

----------------------
    방  문  기  록
----------------------
back     ==> [3. 구글, 2. 야후, 1. 네이버]
현재     ==> 4. 다음
forward  ==> []

뒤로가기 후...

----------------------
    방  문  기  록
----------------------
back     ==> [2. 야후, 1. 네이버]
현재     ==> 3. 구글
forward  ==> [4. 다음]

뒤로가기 후...

----------------------
    방  문  기  록
----------------------
back     ==> [1. 네이버]
현재     ==> 2. 야후
forward  ==> [3. 구글, 4. 다음]

앞으로 가기 후...

----------------------
    방  문  기  록
----------------------
back     ==> [2. 야후, 1. 네이버]
현재     ==> 3. 구글
forward  ==> [4. 다음]

새로운 사이트 접속 후...
5. 네이트사이트로 접속합니다.

----------------------
    방  문  기  록
----------------------
back     ==> [3. 구글, 2. 야후, 1. 네이버]
현재     ==> 5. 네이트
forward  ==> [4. 다음]
profile
Hello, world!
post-custom-banner

0개의 댓글