英文:
Is there any way to get Boolean's string binding rather than its boolean binding in Java
问题
以下是您需要翻译的内容:
这是我需要做的:
public void verifyConditionSatisfies(Boolean condition) {
    if (condition) {
        System.out.println(condition.toString() + "满足条件"); // 这部分是我需要获取其字符串绑定的部分,而不是布尔值的评估版本
    } else {
        System.out.println(condition.toString() + "不满足条件");
    }
}
以下是预期的用法:
verifyConditionSatisfies(10 > 9)
应该评估为
"10 > 9 满足条件"
英文:
Here's what I need to do:
    public void verifyConditionSatisfies( Boolean condition){
  
    			if (condition) {
    				System.out.println(condition.toString()+ "satisfies)//This is the part i need to get its String binding, not boolean evaluated version
                }else{
                    System.out.println(condition.toString()+ " does not satisfy)
                }
	}
Here's an intended usage:
verifyConditionSatisfies(10>9)
should evaluate as
"10>9 satisfies"
答案1
得分: 1
正如评论中所提到的,无法将布尔表达式10>9直接转换为字符串。将表达式作为字符串"10>9"提供可能更容易实现。
以下是一种非常规的实现方式:
public class BooleanEval {
    public static void main(String[] args) throws ScriptException {
        System.out.println(new BooleanEvaluation(""10>9""));
        System.out.println(new BooleanEvaluation(""25<3""));
    }
    public static class BooleanEvaluation {
        private static final ScriptEngine javaScriptEngine = new ScriptEngineManager().getEngineByName("JavaScript");
        private String expression;
        private boolean evaluation;
        public BooleanEvaluation(String eval) throws ScriptException {
            this.expression = eval;
            this.evaluation = Boolean.parseBoolean(String.valueOf(javaScriptEngine.eval(expression)));
        }
        @Override
        public String toString() {
            String evalString = evaluation ? "满足" : "不满足";
            return expression + " " + evalString;
        }
    }
}
输出:
"10>9" 满足
"25<3" 不满足
英文:
As mentioned in comments, getting a boolean expression 10>9 as a String is not possible. Giving the expression as a String "10>9" might be easier to do it.
Here is an unorthodox way to do it:
public class BooleanEval {
	public static void main(String[] args) throws ScriptException {
		System.out.println(new BooleanEvaluation("10>9"));
        System.out.println(new BooleanEvaluation("25<3"));
	}
	public static class BooleanEvaluation {
		private static final ScriptEngine javaScriptEngine = new ScriptEngineManager().getEngineByName("JavaScript");
		private String expression;
		private boolean evaluation;
		public BooleanEvaluation(String eval) throws ScriptException {
			this.expression = eval;
			this.evaluation = Boolean.parseBoolean(String.valueOf(javaScriptEngine.eval(expression)));
		}
		@Override
		public String toString() {
			String evalString = evaluation ? "satisfies" : "does not satisfy";
			return expression + " " + evalString;
		}
	}
}
Outputs:
10>9 satisfies
25<3 does not satisfy
答案2
得分: 0
以下是翻译好的内容:
这个
  verifyConditionSatisfies(10 > 9);
被有效地评估为
  Boolean temp = 10 > 9;
  verifyConditionSatisfies(temp);
该方法不知道其参数是如何计算的。
字符序列1、0、>、9仅存在于源代码中。
因此,答案是“不”。
英文:
This
  verifyConditionSatisfies(10>9);
is effectively evaluated as
  Boolean temp = 10 > 9;
  verifyConditionSatisfies(temp);
The method is unaware of how its argument was calculated.
The character sequence 1, 0, >, 9 exists only in source code.
So, the answer is "no".
专注分享java语言的经验与见解,让所有开发者获益!

评论