2014-03-28 7 views
0
Stack<String> s = new Stack<String>(); 
    String[] tokens = infix.split(" "); 

    StringBuilder output = new StringBuilder(); 

    Integer.getInteger("+", 1); 
    Integer.getInteger("-", 1); 
    Integer.getInteger("*", 2); 
    Integer.getInteger("/", 2); 

    for (int i = 0; i < tokens.length; i++) 
    { 
     if (tokens[i].matches("[0-9]")) 
     { 
      output.append(tokens[i] + " "); 
     } 
     else if (tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/")) 
     { 
      if(tokens[i] <= s.peek()) 
      { 

      } 
     } 
    } 

    return output.toString(); 

접미사 계산기에 접미어를 쓰고 있습니다. 현재 토큰 값이 토큰의 값보다 작거나 같은지 말할 것입니다. 스택 Integer.valueOf를 사용하여 특정 토큰에 숫자 값을 설정했지만 문자열이므로 "< ="을 사용할 수 없었습니다. String.greaterThan() [가상의] 종류의 메서드를 사용해야합니까?문자열 값 비교 접미사 접미사

+0

어,'Integer.valueOf ("+", 1) :

또 다른 옵션은 운영자에 숫자 값을 제공해야하는 경우, 숫자 값으로 각 운영자를 매핑하는 것이다 폭파. "+"는 숫자가 아닙니다. – azurefrog

답변

0
if (tokens[i].equals("-") || tokens[i].equals("+") || tokens[i].equals(s.peek)) 

이 기능은 맛이 덜한 것 같지만 수행하려는 작업을 수행합니다.

나는 if 문을 사용하고 가중치를 지정하는 것을 잊지 만, 아래에서 주장하는 바를 따르는 것이 좋습니다. `가 가고,

HashMap<String, Integer> operators = new HashMap<String, Integer>(); 

operators.put("+", 1); 
operators.put("-", 1); 
operators.put("*", 2); 
operators.put("/", 2); 
+0

getInteger로 변경했습니다. –

+0

해시 맵을 아직 알지 못해서 사용하고 있다고 느끼지 않습니다. –

+0

@ user3427042 가중치를 설정 또는지도에 할당하려는 경우 올바른 방법으로 접근하지 못했다고 생각합니다. 위의 if 문과 같이 문자열에만 고정 할 수는 있지만 걱정할 필요는 없습니다. –