java 跪求很高的手进来帮忙!!

来源:百度知道 编辑:UC知道 时间:2024/06/29 02:02:36
话说4个数算24,已经实现输出不重复的所有24的算法,现最后1个功能是验证输入的算式正确性。(JFrame框架下的JTextField的String)

已经用递归把括号都拆分了,所以递归最后只需要求一个不带括号的4个数字的+-×/字符串算式的值。比如1*(2*(3+4)),递归出先求3+4,然后2*7这样子。

然后又写到拆分出这个算式的每个运算符的index位置和每个运算元素的String,现在问题就出现在这里了,比如:
1+10*2+3 我可以实现了4个数组分别保存 +-*/ 的index:
int add[3] = {1, 6, 0} 因为一共就4个数,比较死,所以一共就3个符号
int sub[3] = {0, 0, 0} 最多可能性就是3个运算符一样的,所以就[3]
int mul[3] = {4, 0, 0}
int div[3] = {0, 0, 0}
然后还能有一个统一的数组 {1,4,6}
然后还保存了一个String ele[4] = {"1", "10", "2", "3"}

然后写不下去了,感觉下面if会很多,每次想到一半就乱了,遭不住,怎么办卡在这里了。。。高手指点,我追加= =
那个要 jdk1.6 把?我没那么高

可以直接运算
你执行下面的代码试试!
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JScript {
public static void main(String[] args) throws ScriptException {
String str="1+2*(3+3)+6/7";//传入你的算式
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript"); //"JavaScript"是关键字 勿改动
Double d =(Double)engine.eval(str);
System.out.println(d);
}
}

是 jdk1.6的新内容 脚本执行能力
你要是jdk版本不够的话 把它需要的依赖包down下来就可以了

好难哦。。没思路,!
话说4个数算24,已经实现输出不重复的所有24的算法。。。能不能把这个算法贴出来让我看看??

用向量vector 然后用Integer转回整形进行计算 具体方法查api

学学编译原理吧。

import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static int count(String string){