永发信息网

java程序的小问题

答案:6  悬赏:30  手机版
解决时间 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等一类的表达式计算的类库,直接把表达式座位参数传入就能计算出结果,具体你可以了解一下,不止一种哦,选一种你觉得好用的就行。 附链接:网页链接
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯