마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

스택관련해서 질문드립니다.

0 추천
public class Scoring {
    public final static int MAX = 100;
    public final static int EMPTY = 0;
    static int stack[] = new int[MAX];
    static int top = 0;
 
    public static int _1p = 0;
    public static int _2p = 0;
 
    public static String p1Score = "0";
    public static String p2Score = "0";
 
    public static int p1Game = 0;
    public static int p2Game = 0;
 
    static int Win = 0;
 
    static boolean tieBreak = false;
 
 
    static void ruleMain(int buttonClick)
    {
        //int inputBack;
        if(buttonClick==3){
            int popRet;
            popRet = Pop();
 
            if(popRet==1){
                _1p--;
                if(_1p<0){
                    _1p = 0;
                }
                System.out.println("1p :"+_1p);
                WinSearch();
            }
            else if(popRet==2){
                _2p--;
                if(_2p<0){
                    _2p = 0;
                }
                System.out.println("2p :"+_2p);
                WinSearch();
            }
        }
 
//////////////////////////////////////
/* Stack */
    static void Push(int data){
        int push;
        if(!isFull()){
            push = stack[++top] = data;
            System.out.println(push);
            //System.out.println(data);
        }
        else{
            System.out.println("Stack Error");
        }
    }
 
    static int Pop() {
        int ret = 1;
        if(!isEmpty())
            ret = stack[--top];
        System.out.println(ret);
        return ret;
    }
 
    static Boolean isEmpty() {
        if(top == EMPTY)
            return true;
        return false;
    }
 
    static Boolean isFull() {
        if(top == MAX-1)
            return true;
        return false;
    }
 
}

블루투스리모컨에 있는 버튼을 이용해서 점수를 올리고 실행취소 하는 기능을 넣으려고 하는데요.

1p의 점수를 2번 올리고 2p의 점수를 2번 올리면 로그캣에

1

0

1

0

2

0

2

0

이렇게 뜨고 이상태에서 실행취소 버튼을 한번 누르면 맨 마지막에 올라갔던 2p 점수는 그 전 점수로 내려가고

한번 더 누르면 로그캣에 0이라는 문구가 뜨면서 아무 반응이 없습니다. 그리고나서 한번 더 내리면 2p점수 내려가고 

이런식으로 두번 눌러야 실행취소가 되는데 한번만 눌러서 실행취소 시킬 수 없을까요?

CINOTALF (170 포인트) 님이 2013년 10월 28일 질문

1개의 답변

+1 추천
스택은 Stack 클래스 써서 사용하셔도 됩니다.

그리고 위에 구현하신 부분에서 push와 pop 동작에 문제가 있는데

++top, top++, --top, top-- 차이를 아셔야 할듯합니다.

만약 값을 한번만 넣고 뺀다고 하면

++top으로 넣으셨으니 값은 stack[1]에 들어가고

--top으로 빼기때문에 stack[0]에서 값을 가져오고 있네요.
whitesnow (8,920 포인트) 님이 2013년 10월 29일 답변
...