import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Java机试题 {
public static void main(String[] args) {
//在桌面自动 建立log.txt文件
File file =new File("C:\\Users\\Administrator\\Desktop\\log.txt");
try {
file.createNewFile();//创建文件
} catch (IOException e) {
e.printStackTrace();
}
// 运算
List list = new ArrayList();
list.add("(23 - (10 / (2+3))) + 19");
list.add("(9 +10) / (3-2) * (4+7)");
String str=String.valueOf(list.get(0));//解析成字符串
String stra=String.valueOf(list.get(1));
ScriptEngineManager manager = new ScriptEngineManager();//解析字符串进行运算
ScriptEngine engine = manager.getEngineByName("js");
Object result,result1;
try {
result = engine.eval(str);//获取结果
result1 = engine.eval(stra);
// 普通打印,显示到控制台
System.out.println("表达式为:"+list.get(0));
System.out.println("求值结果为:"+result);
System.out.println("表达式为:"+list.get(1));
System.out.println("求值结果为:"+result1);
// 重定向打印
try {
System.setOut(new PrintStream(new FileOutputStream(file)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 重定向打印,输出到文件
System.out.println("表达式为:"+list.get(0));
System.out.println("求值结果为:"+result);
System.out.println("表达式为:"+list.get(1));
System.out.println("求值结果为:"+result1);
} catch (ScriptException e1) {
e1.printStackTrace();
}
openFile();//运行完流程后 自动用记事本打开日志文件
}
/**
* 自动打开log.txt文件
*/
public static void openFile() {
final Runtime runtime = Runtime.getRuntime();
Process process = null;
final String cmd = "rundll32 url.dll FileProtocolHandler file://C:\\Users\\Administrator\\Desktop\\log.txt";
try {
process = runtime.exec(cmd);//打开文件
} catch (final Exception e) {
System.out.println("Error exec!");
}
}
}