자리

2017-10-13 6 views
0

나는 그것의 후위 표기법의 중위 표기에서 식을 변환 할 수있는 방법을 가지고,하지만 난 예를 들어 9자리

보다 큰 숫자를 처리하는 방법을 모른다>로 1 후위에 중위를 변환, 12- (5 + 3)면 1253 + - 12 53 + - (또는 비슷한 형식) 대신 표현하고 싶지 않을 것입니다.

내가 무엇을 가지고 :

private void postfix(){ 
     String result = ""; 
     LinkedStack<Character> stack = new LinkedStack<Character>(); 
     for (int i = 0; i < expression.length(); i++){ 
      char c = expression.charAt(i); 
      if (Character.isDigit(c)){ 
        result += c; 
      } 
      else if (c == '('){ 
        stack.push(c); 
      } 
      else if (c == ')'){ 
        while (!stack.isEmpty() && stack.peek() != '('){ 
         result += stack.pop(); 
        } 
        if (!stack.isEmpty() && stack.peek() != '('){ 
         result = "Invalid Expression"; 
        } 
        else{ 
         stack.pop(); 
        } 
       } 
      else if(isOperator(c)){ 
       while (!stack.isEmpty() && weight(c) <= weight(stack.peek())) 
         result += stack.pop(); 
       stack.push(c); 
      } 
     } 
     postfixed = result; 
    } 

답변

1

당신은 코드의이 부분을 수정해야합니다 표현이 "1234"인 경우

if (Character.isDigit(c)){ 
    result += c; 
} 

을, 당신은 단지 계산하는 것입니다 1 + 2 + 3 1234를 하나의 숫자로 취급하는 대신 +4를 사용하십시오.

대신 할 수있는 것은 연속 숫자를 String으로 수집하는 것입니다. 그런 다음 Integer.parseInt()

을 사용하여 문자열을 정수로 변환합니다.