Java で RPN 計算機を実装していますが、方程式を個別のトークンに解析するためのクラスを作成するのに助けが必要です。
私の入力ファイルには、以下に示すような未知の数の方程式が含まれます。
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 が行ごとに機能することを確認するにはどうすればよいですか? 従おうとしているアルゴリズムにかなり混乱しています。