2013-11-21 4 views
1

wIt은 매우 혼란 스럽습니다.하지만 근본적으로 내가 알아 내려고하는 것은 파일에서 정보를 가져 와서 파싱하는 방법입니다. 파일의 방정식.파일에서 정보를 가져 와서 파싱하여 방정식을 얻습니다.

처럼 말은, 파일은 문제를 포함 8 + 5 = 13 내 프로그램은 정수 (8) 5 걸릴 운영자 기호를 인식하고 그래서 수학을 다음 파일을 읽고 싶어

문제를 채점하기 위해 최종 답과 비교할 수 있습니다.

나는 첫 번째 정수를 캡처 할 수있는이 코드 줄을 이미 가지고 있지만, 나는 수학을하기위한 프로그램을 얻을 수 있도록 연산자와 두 번째 정수를 얻지 못하고있다.

int whiteSpace1 = fileContent.indexOf(" "); 
     int first = Integer.parseInt(fileContent.substring(0, whiteSpace1)); 
     int second = Integer.parseInt(fileContent.substring(whiteSpace1, 2)); 

나는 연산자와 두 번째 int를 얻기 위해 여기서 어디로 갈지 실감이 없습니다. 도와주세요.

추가 정보 : 항상 두 개의 피연산자 만있는 것은 아니며 항상 정수는 아닙니다. 배열이나 regex 또는 try/catch도 사용할 수 없습니다.

+0

읽기 렉서와 파서 .. :) – Arun

+0

은 항상 두 개의 피연산자 하나 개의 표현이다? 아니면 훨씬 더 복잡 할 수 있습니까? –

답변

0

간단한 구문 분석을 위해 StreamTokenizer를 사용해보십시오. 그것이 어떻게 작동하는지

간단한 예제 코드를 확인합니다 : 프로그래밍

StreamTokenizer tokenizer = new StreamTokeniner(new StringReader(fileContent)); 
while (tokenizer.nextToken() == Tokenizer.TT_EOF) { 
    if (tokenizer.ttype > 32) { 
    System.out.print("token type: '" + ((char) tokenizer.ttype) + "'"); 
    } else { 
    System.out.print("token type: " + tokenizer.ttype); 
    } 
    System.out.println(" string value: " + tokenizer.sval + 
        " numeric value: " + tokenizer.nval); 
}