2012-09-06 2 views
1

그래서 자바 기반의 텍스트 기반 계산기를 만들려고 노력하고 있지만 스캐너는 나에게 두통을주고 있습니다. 여기에 코드 snipit ...수학 텍스트와 너무 많은 토큰이있는 스캐너 문제

Scanner input=new Scanner(in); 
    while (input.hasNext()){ 
     System.out.print(input.next()+"."); 
    } 
    System.out.print("\n"); 

내 입력이입니다입니다 : "1 + 케이크 (3,4,6,10 * 30 + 죄 (4)) * 3" 내 출력이 있어야한다 : "1 +. 케이크 (3,4,6,10 * 30 + sin (4)). * .3."

스캐너는 공백 만 토큰해야합니다. 그러나 이것은 내가 얻은 것입니다. "1. +. cake (.3., .4., .6., .10. .30. +. 죄. (.4.).). .3. "

모든 공간을 제거하지만 구두점의 모든 단어, 숫자 및 비트를 구분합니다! 이제 숙제를하고 input.useDelimiter (String in)를 사용하여 다양한 구분 기호를 시도했습니다. "\ s" "\ s +" "\ s *" "\ s * +" "[]"등의 많은 것들이 사용되었습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까!?!?!?!?!

+0

input.useDelimiter ("\\ s +"); //이 바로 위에 놓습니다. –

+0

예, input.useDelimiter ("XXXXX"); 나는 바로 거기에 사용했다. 여기서 XXXXX는 내가 열거 한 것들 중 하나이다. 웬일인지 내가 앞에있는 여분의 슬래쉬를 제거했다. 심지어 줄마다 문자를 인쇄하는 스팅을 통해 놀랍게도 깜짝 문자가 없는지 확인했습니다. –

+0

시도해 보셨습니까 .. String [] tokens = in.split ("\\ s +"); –

답변

0

대신 StringTokenizer를 사용해보십시오.

public class demo 
{ 
    public static void main(String args[]) 
    { 
      StringTokenizer st = new StringTokenizer("1 + cake(3,4,6,10*30+sin(4)) * 3"); 
      while (st.hasMoreTokens()) 
      { 
       System.out.println(st.nextToken()); 
      } 
    } 
}