과제로 안드로이드 내부에 있는 계산기를 만들고 있습니다.

안드로이드 내부에 있는 계산기가 스택을 이용한 스택계산기이더군요..

배우지도 않은 자료구조 책을 봐 가면서 하고 있는데...

코드상에 오류는 없는데 안드로이드 에뮬레이터로 작동시키니까 실행시에 문제가 일어나네요...

 

계산기 작성 과정중에

 

public void Click_Num(double click)
{
  
          if(before.equals("=")||before.equals("op"))
          {
                   currentNumber=click;
                   ResultBar.setText("Click_Num when equal, op");
          }
          else if(before.equals("number"))
          {
                   currentNumber=10*currentNumber + click;
                   ResultBar.setText("Click_Num when number");
          }
          else
                   ResultBar.setText("before checking Error");
  
          ResultBar.setText(String.valueOf(click));
          before="number";
          operandStack.push(click);
}

 

위와 같은 함수를 생성 하였습니다. 숫자 버튼 클릭 시에 사용할 목적으로요.

if문 안의 setText는 잘 실행 되었나 테스트를 하기 위해서 삽입한 내용입니다.

위와 같은 함수를 다음과 같이 사용하였습니다.


     //0번 클릭
     Button_0.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    Click_Num(0);
    
   }
  });

Button_0은 0번 버튼의 이름입니다.

컴파일러 상으로는 문제가 없는데, 에뮬레이터로 실행 시켰을 때 문제가 발생합니다.

실행까지는 문제가 없지만, 0번 버튼을 클릭하면

Unexpected error가 뜨면서 계산기 프로그램이 종료되어 버립니다.

혹시 함수 내부에서 문제가 되었나 해서 다음과 같이 함수를 바꿔서 실행 해 봤는데도 여전히 문제가 생기더군요..


public void Click_Num(double click)
 {
  /*
          if(before.equals("=")||before.equals("op"))
          {
                   currentNumber=click;
                   ResultBar.setText("Click_Num when equal, op");
          }
          else if(before.equals("number"))
          {
                   currentNumber=10*currentNumber + click;
                   ResultBar.setText("Click_Num when number");
          }
          else
                   ResultBar.setText("before checking Error");
  */
          ResultBar.setText(String.valueOf(click));
          before="number";
          operandStack.push(click);
 }

이랬는데도 오류가 생겼다는 말은....

함수 자체에 진입하는데에 문제가 생겼다는 말 아닌가요??

함수의 정의 위치는

메인 클래스(맞는 말인가 모르겠군요...파일명과 같은 이름을 가지는 클래스를 지칭하였습니다.)에서 여러 변수를 정의해주는 부분 아래,

즉 변수 선언 이후와 OnCreate 함수 사이에 선언 해 주었습니다.

함수 선언 위치가 문제였다면 컴파일 상에서도 오류가 발견 될텐데...그러지도 않고...

왜 그런지 모르겠습니다..;;;

펍에 계신 고수님들께 여쭤봅니다...ㅎㅎ

이거때문에 며칠째 막혀서 최종과제를 진행 못시키고있네요ㅋ

혹시 도움이 될까봐 소스도 함께 첨부합니다.