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

(Java)将字符串计算为布尔值,java,string,if-statement,boolean,evaluate,Java,String,If Statement,Boolean,Evaluate,好的。。。我已经找了一段时间了,我似乎找不到一个简单的解决办法 我试图获取调用时传递的字符串,并将其作为IF条件中的布尔表达式进行求值 $java MyProgram x==y ... int x; int y; ... String stringToEval = args[0]; ... if(stringToEval){ printSomething(); } else printNothing(); ... 提前感谢据我所知,字符串args[0]是一个布尔值?那么为什么不将它转换

好的。。。我已经找了一段时间了,我似乎找不到一个简单的解决办法

我试图获取调用时传递的字符串,并将其作为IF条件中的布尔表达式进行求值

$java MyProgram x==y

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

提前感谢

据我所知,字符串args[0]是一个布尔值?那么为什么不将它转换为布尔值呢

boolean boolToEval = Boolean.parseBoolean(args[0]);
//OR
boolean boolToEval = Boolean.valueOf(args[0]);    

//THEN
(boolToEval ? printSomething() : printSomethingElse());

您所做的有点复杂,您需要计算表达式并从操作中提取2个参数

String []arguments = extractFromArgs(args[0])
参数中可以得到
x
y

然后:

如果x和y是整数:

int intX = new Integer(arguments[0]);
int intY = new Integer(arguments[0]);
if (intX == intY)
等等


PS:为什么使用整数、双精度。。?因为在字符串求值中“2”不等于“2.0”,而在整数和二次求值中,它们相等

您需要使用某种形式的表达式解析器来解析
args[0]
中的值,并创建一个可应用于
x
y
的表达式。您可能会使用类似,或这样的方法来执行此操作。如果输入定义良好,您也可以自己编写一个小型解析器。

将输入作为命令行参数的任何时候都是字符串类型,您希望将其用作布尔值,因此需要将字符串转换为布尔值

为此,您必须选择使用
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();
...

似乎还需要更多的细节:他不是要求将
args[0]
true
false
转换为布尔值,他要求的是某种计算
x==y
或其他表达式的方法,并将其应用于应用程序中的
x
y
。@ChrisMantle检查我的另一个答案,我对待了你说的话你没看到菲没有转换。。。他正在arg[0]中使用正则表达式。回答之前请先阅读问题。@AdelBoutros他到底在哪里说的?@Voidpaw他不是在传递正则表达式,而是在传递表达式,在问题的这一行:
$java MyProgram x==y
。他想计算
x==y
并将表达式应用于一些变量
x
y
@ChrisMantle那么谁提到了正则表达式?就我所知,这是Adel Boutros的?请再次查看答案,
args[0]
不是可以简单地解析为
布尔值的
true
false
。这是一个需要计算的表达式。
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();
...