2017-10-17 22 views
1

조건부 명령문을 실행할 조건을 설정 한 다음 두 줄의 코드가 있습니다. 그러나 조건이 충족되지 않아도 조건 내 프로그램이 실행되기 때문에 논리에 문제가 있습니다. 입력 문자열의 경우 : -이 코드와 I의 두 번째 줄에 "(* 및/+) 내 테스트 케이스에 입력 어떤 연산자"Java : 조건문의 논리가 작동하지 않아 조건이 충족되지 않아도 프로그램을 실행할 수 있습니다.

if (!(token.equals('+')) && !(token.equals('-')) && !(token.equals('*')) && !(token.equals('/'))) { 
      operandStack.push(Integer.valueOf(token)); 
     } 

은 내가 java.lang.NumberFormatException의 무엇입니까 그것이 Integer.valueOf()가 심볼에 대해 작동하지 않기 때문이라는 것을 알았지 만 그것은 그 것이다. 심볼이라면 처음부터 실행해서는 안됩니다. 모든 종류의 오타 나 바보 같은 구문 오류를 찾으려고 노력했지만 아무 것도 발견하지 못했습니다. 이 논리에 어떤 문제가 있습니까?

+0

토큰이란 무엇입니까? 나는 그것이 '문자열'이라는 직감을 가지고있다. – azurefrog

+0

'token'은 문자열입니까? 그것을'char' 값과 비교하고 있습니다. – Blorgbeard

+1

작은 따옴표를 큰 따옴표로 바꾸십시오. – vikarjramun

답변

0

당신은 토큰이 정규 표현식을 통해 정수인지 확인하기 위해 더 잘 할 수 있습니다

if (token.matches("\\d+")) { 
    operandStack.push(Integer.parseInt(token)); 
} 

이 그리고 정수에 문자열을 구문 분석합니다.

패턴 \d+ (Java에서 이중 이스케이프 처리됨)은 하나 이상의 숫자와 일치합니다.