我用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