java读写txt文件并且进行字符串操作代码
input.txt如下:
5*6+3
2*(3+2-1)
……
要求如下:
1. 从input.txt文件,读取每一行的数据并计算出结果输出。
2. 输出格式如下:
5*6+3=33
2*(3+2-1)=8
……
涉及到的考点:
文件操作
字符串操作
数据结构栈或者二叉树的运用
读倒不难,计算就麻烦了。。
FileReader fr = new FileReader("c:/a.txt");
BufferedReader br = new BufferedReader(fr);
String str = null;
while((str = br.readLine()) != null)
{
System.out.println(str);
//在这里进行计算。
}
br.close();
fr.close();
这计算太难的吧。。
挺感兴趣的,希望有高手解答。
input.txt里面再加几个字符串
1+2+2
3*5-2
3*(3+1)-2
4/3+2
(5+2)*4-12+(3+55)*23
((5+2)*4-12)*3+(3+55)*2
//计算代码
//相当于一个表达式解析器
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExpressionParser {
static Map<String, Integer> optrOrder;
static {
init();
}
private static void init() {
optrOrder = new HashMap<String, Integer>();
optrOrder.put("(", 0);
optrOrder.put("*", 1);
optrOrder.put("/", 1);
optrOrder.put("%", 1);
optrOrder.put("+", 2);
optrOrder.put("-", 2);
optrOrder.put("^", 3);
optrOrder.put("#", 3); }