我正在用 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 逐行工作?我对我试图遵循的算法感到非常困惑。