我用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
我已经实现了在程序中使用我自己的泛型Stack类,但现在我想弄清楚如何从输入文件读取数据。任何帮助赞赏。
我已经发布了我的堆栈类的源代码在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 –
感谢您的帮助。 堆栈类在那里,因为我需要使用它来创建堆栈来存储计算答案而不是使用内置的java utils时的标记。 – Ph9