컴퓨터게시판에 모르고 글올렸다가 다시 일로 글을 옮겼습니다. 프로그래밍언어 입문단계인데요. 토크나이저랑 스택을이용해서 계산기를 만들어보자-해서 만들고있는데 에러가 나서 질문드려요!
public class Ex {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<Integer>(); //int형을 받는 스택을 생성하고
StringTokenizer st = new StringTokenizer("50+10", "+", true); //Tokenizer생성하고
while(st.hasMoreTokens()) //Tokenizer에 토큰이 있을떄까지
{
if(isNumber(st.nextToken())) //토큰이 숫자라면
{
int a = Integer.parseInt(st.nextToken()); //토큰값을 인트형으로 변환하고
stack.push(a); //스택안에 값을 집어넣는다!
}
}
}
라는걸 하려고했더니
Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at cp11.Ex4.main(Ex4.java:12)
라는 에러가 뜨는데요. 제가보기엔 에러코드 마지막줄보니까 토큰값을 인트형으로 변환하는데 방법이 잘못된거같은데
자바고수님들 해법좀 알려주시면 감사하겠습니당..
참고로 isNumber메서드는
static boolean isNumber(String str){
boolean s;
try
{
Integer.parseInt(str);
s = true;
}
catch(NumberFormatException nfe)
{
s=false;
}
return s;
}
이렇게 만들었는데 잘 구동되는거 같더라고요. 앞서 올렸던 글에서 st.nextToken()을 두번 사용해서 에러가 났다는거같으시다는데 어떻게 고쳐가야할까요..?