好的......我一直在寻找一段时间,我似乎无法找到一个简单的解决方案。
我正在尝试在调用时传递一个字符串并将其作为IF条件中的布尔表达式进行评估
$ java MyProgram x == y
...
int x;
int y;
...
String stringToEval = args[0];
...
if(stringToEval){
printSomething();
} else printNothing();
...
提前致谢
答案 0 :(得分:2)
您需要使用某种形式的表达式解析器来解析args[0]
中的值,并创建一个可应用于x
和y
的表达式。您可以使用Janino,JEXL或Jeval之类的内容来执行此操作。如果输入定义明确,您也可以自己编写一个小解析器。
答案 1 :(得分:1)
你正在做的事情有点复杂,你需要评估表达式并从操作中提取2个参数
String []arguments = extractFromArgs(args[0])
您在x
y
和arguments
个值
然后:
if (arguments [0].equals(arguments[1]))
如果x和y是整数:
int intX = new Integer(arguments[0]);
int intY = new Integer(arguments[0]);
if (intX == intY)
等...
PS:为什么要使用Integer,Double ..?因为在字符串中评估“2”不等于“2.0”,而在整数和双重评估中,它们是相等的
答案 2 :(得分:0)
您将输入作为命令行参数的是String类型,并且您希望将其用作布尔值,因此您需要将String转换为布尔值。
为此,您必须选择使用valueOf(String s)
或parseBoolean(String s)
因此您的代码必须如此,
S...
int x;
int y;
...
String stringToEval = args[0];
boolean b = Boolean.valueOf(stringToEval);
boolean b1 = Boolean.parseBoolean(stringToEval); // this also works
...
if(b){
printSomething();
} else printNothing();
...
答案 3 :(得分:-2)
所以据我所知,字符串args [0]是一个布尔值?为什么不将它转换为布尔值呢?
boolean boolToEval = Boolean.parseBoolean(args[0]);
//OR
boolean boolToEval = Boolean.valueOf(args[0]);
//THEN
(boolToEval ? printSomething() : printSomethingElse());