java程序的小问题
解决时间 2021-01-04 08:27
- 提问者网友:抽煙菂渘情少年
- 2021-01-03 09:14
比如有if(A>B)其中A,>,B都在一个列表里面存着。
我想完成类似if(conditionsList.get(0)conditionsList.get(1)conditionsList.get(2))?我只能变成if(conditionsList.get(0)>conditionsList.get(2)),但有可能这个不是>而是别的符号比如<,&&,||,希望一行就能写这个if句,还是只能这样写:
if(conditionsList.get(1).equals(">")){
if(conditionsList.get(0)>conditionsList.get(2)){
dosomething..
}
}else if(conditionsList.get(1).equals("<")){
if(conditionsList.get(0) dosomething..
}
}else if(conditionsList.get(1).equals("&&")){
if(conditionsList.get(0).equals(conditionsList.get(2))){
dosomething..
}
}...
但我用的时候其实有很多的条件都存在这个列表,这样写排列组合起来if判断就太多了啊。。有没有什么办法。。。
最佳答案
- 五星知识达人网友:一秋
- 2021-01-06 22:36
这不是“小问题”呢。
我第一感觉是,这得用抽象语法树来解决。这个树会把符号及其符号的左右两边都收集整理好,你只需处理具体逻辑即可。但这个难度对你来说是不是更高了一点?
另外,你的穷觉的做法,虽然不优雅,但在需求明确范围之内,其实是可解的。
全部回答
- 1楼网友:荒野風
- 2021-01-07 04:41
你可以考虑一下递归
- 2楼网友:患得患失的劫
- 2021-01-07 03:09
办法是有的,js eval函数可以对一段字符串进行计算,java可以调用js。 代码如下
public class Demo {
static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
public static void main(String[] args) {
List list = new ArrayList();
list.add("2");
list.add("+");
list.add("3");
String strs = list.get(0)+list.get(1)+list.get(2);
try {
System.out.println(jse.eval(strs));
} catch (Exception t) {
}
}
}
望采纳
- 3楼网友:神也偏爱
- 2021-01-07 01:54
这个代码应该是错误的吧?
改为:
alfa a1 = new alfa();
alfa a2 = new beta(0);
beta a3 = new beta(0);
x 处总共创建了7个,其中三个被继承覆盖了!一个在构造函数中创建,由于是基本数据类型,所以java会从传递进来的值 复制一份放到参数n中,而不是引用!(提示,构造函数中不允许有返回值所以应该去掉void)
按这样的话 a1对象保存了 3个int 由于这是基本数据类型,所以不会想引用类型(没有值则不分配内存,或引用其他对象内存)
- 4楼网友:怀裏藏嬌
- 2021-01-07 00:06
java有JEval等一类的表达式计算的类库,直接把表达式座位参数传入就能计算出结果,具体你可以了解一下,不止一种哦,选一种你觉得好用的就行。
附链接:网页链接
我要举报
大家都在看
推荐资讯