저는 RPN 계산기를 Java로 구현하고 있습니다. 방정식을 별도의 토큰으로 구문 분석하는 클래스를 만드는 데 도움이 필요합니다.파일에서 읽을 때 문자열 토크 나이저를 사용하는 방법은 무엇입니까?
것과 비슷한 식의 알 수없는 번호가됩니다 내 입력 파일은 다음과 같습니다 :
난 이미 내 자신의 일반적인 스택 클래스는 프로그램에 사용되는,하지만 난 지금에 노력하고 구현 한49+62*61-36 4/64 (53+26) 0*72 21-85+75-85 90*76-50+67 46*89-15 34/83-38 20/76/14+92-15
입력 파일에서 데이터를 읽는 방법을 찾아보십시오. 어떤 도움을 주셔서 감사합니다.
내 스택 클래스의 소스 코드를 PasteBin에 게시했습니다. 도움이 될 수 있습니다.
나는 또한 이미 완료 한 것을 보여주기 위해 파일 읽기가없는 계산기를 PasteBin에 업로드했습니다.
필자는 파일을 읽을 수있게되었고 토큰이 도움이되었습니다. 파일 끝에 도달했을 때 오류가 발생하여이를 해결하는 방법이 궁금합니다.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class TestClass {
static public void main(String[] args) throws IOException {
File file = new File("testEquations.txt");
String[] lines = new String[10];
try {
FileReader reader = new FileReader(file);
BufferedReader buffReader = new BufferedReader(reader);
int x = 0;
String s;
while((s = buffReader.readLine()) != null){
lines[x] = s;
x++;
}
}
catch(IOException e){
System.exit(0);
}
String OPERATORS = "+-*/()";
for (String st : lines) {
StringTokenizer tokens = new StringTokenizer(st, OPERATORS, true);
while (tokens.hasMoreTokens()) {
String token = tokens.nextToken();
if (OPERATORS.contains(token))
handleOperator(token);
else
handleNumber(token);
}
}
}
private static void handleNumber(String token) {
System.out.println(""+token);
}
private static void handleOperator(String token) {
System.out.println(""+token);
}
}
는 또한 어떻게이 RPN이 라인으로 라인을 작동하는지 확인합니다 : 여기
코드인가? 내가 따라야 할 알고리즘에 상당히 혼란스러워진다.
스택 클래스는 파일 읽기/파싱과 관련이 있습니까? –
한 줄씩 읽을 수 있고 다른 줄을 ArrayList에 넣을 수 있습니다. 그런 다음 다른 표현식을 토큰 화 한 다음 구문 분석하고 결과를 계산하십시오. 유사하게 보일 수 있습니다 (좀 더 복잡한 예일 수도 있습니다). http://github.com/mgechev/ELang –
도움을 주셔서 감사합니다. 스택 클래스는 빌트인 자바 유틸리티를 사용하는 대신 답변을 계산할 때 토큰을 저장할 스택을 생성 할 때 사용해야합니다. – Ph9