(Java)将字符串计算为布尔值

时间:2013-10-31 11:11:28

标签: java string if-statement boolean evaluate

好的......我一直在寻找一段时间,我似乎无法找到一个简单的解决方案。

我正在尝试在调用时传递一个字符串并将其作为IF条件中的布尔表达式进行评估

$ java MyProgram x == y

...
int x;
int y;
...
String stringToEval = args[0];
...
if(stringToEval){
    printSomething();
} else printNothing();
...

提前致谢

4 个答案:

答案 0 :(得分:2)

您需要使用某种形式的表达式解析器来解析args[0]中的值,并创建一个可应用于xy的表达式。您可以使用JaninoJEXLJeval之类的内容来执行此操作。如果输入定义明确,您也可以自己编写一个小解析器。

答案 1 :(得分:1)

你正在做的事情有点复杂,你需要评估表达式并从操作中提取2个参数

String []arguments = extractFromArgs(args[0])

您在x

中获得了yarguments个值

然后:

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());