(Java)将字符串计算为布尔值
好的。。。我已经找了一段时间了,我似乎找不到一个简单的解决办法 我试图获取调用时传递的字符串,并将其作为IF条件中的布尔表达式进行求值 $java MyProgram x==y(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]是一个布尔值?那么为什么不将它转换
...
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();
...