好的......我一直在寻找一段时间,我似乎无法找到一个简单的解决方案。
我正在尝试获取调用时传递的字符串并将其评估为 IF 条件中的布尔表达式
$ java MyProgram x==y
...
int x;
int y;
...
String stringToEval = args[0];
...
if(stringToEval){
printSomething();
} else printNothing();
...
提前致谢
好的......我一直在寻找一段时间,我似乎无法找到一个简单的解决方案。
我正在尝试获取调用时传递的字符串并将其评估为 IF 条件中的布尔表达式
$ java MyProgram x==y
...
int x;
int y;
...
String stringToEval = args[0];
...
if(stringToEval){
printSomething();
} else printNothing();
...
提前致谢
您所做的有点复杂,您需要评估表达式并从操作中提取 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)
ETC...
PS:为什么要使用 Integer、Double ..?因为在字符串评估中“2”不等于“2.0”,而在整数和双精度评估中,它们是相等的
您将输入作为命令行参数的是字符串类型,并且您想将其用作布尔值,因此您需要将字符串转换为布尔值。
为此,您必须选择使用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] 是布尔值吗?那么为什么不将它转换为布尔值呢?
boolean boolToEval = Boolean.parseBoolean(args[0]);
//OR
boolean boolToEval = Boolean.valueOf(args[0]);
//THEN
(boolToEval ? printSomething() : printSomethingElse());