Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将用户输入的比较运算符直接引入if语句(java)_Java_Compare_Comparison - Fatal编程技术网

将用户输入的比较运算符直接引入if语句(java)

将用户输入的比较运算符直接引入if语句(java),java,compare,comparison,Java,Compare,Comparison,很抱歉,如果这是一个简单的问题,我对编码还不熟悉,在网上找不到答案/找不到正确的表达方式 因此,我为比较运算符(=,!=,=)接收用户输入,然后使用它计算输出 是否可以将用户输入直接放入if语句的比较运算符中 aka input USERINPUTPORMATION和if语句是否有效 if(number1 userInputComparison number2) { } 还有别的办法吗 例如,我的代码在下面的简化版本中是否可以删除冗余 BufferedReader reader = new

很抱歉,如果这是一个简单的问题,我对编码还不熟悉,在网上找不到答案/找不到正确的表达方式

因此,我为比较运算符(=,!=,=)接收用户输入,然后使用它计算输出

是否可以将用户输入直接放入if语句的比较运算符中

aka input USERINPUTPORMATION和if语句是否有效

if(number1 userInputComparison number2) {

}
还有别的办法吗

例如,我的代码在下面的简化版本中是否可以删除冗余

BufferedReader reader =  new BufferedReader(new InputStreamReader(System.in));
String userInput = reader.readLine(); //Should be > or <
int userInputNumber = Integer.parseInt(reader.readLine());
System.out.println("RESULTS");
int[] numbers = {5, 15, 12, 7, 0};
if (userInput.equals(">")) {
   for(int i = 0; i < numbers.length; i++) {
      if(numbers[i] > userInputNumber) {
         System.out.println(numbers[i]);
      }
   }
} else if (userInput.equals("<")) {
   for(int i = 0; i < numbers.length; i++) {
      if(numbers[i] < userInputNumber) {
         System.out.println(numbers[i]);
      }
   }
} else {
   System.out.println("please enter > or <");
}
BufferedReader reader=新的BufferedReader(新的InputStreamReader(System.in));
字符串userInput=reader.readLine()//应该是>或<
int userInputNumber=Integer.parseInt(reader.readLine());
系统输出打印项次(“结果”);
int[]数字={5,15,12,7,0};
if(userInput.equals(“>”){
for(int i=0;iuserInputNumber){
System.out.println(数字[i]);
}
}

}如果(userInput.equals(“或是”),您可以使用java中的ScriptEngineManager。下面是一个示例代码,向您展示如何使用它:

public static void main(String[] args) throws ScriptException {
    ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
    ScriptEngine scriptEngine = scriptEngineManager.getEngineByExtension("js");
    Bindings bindings = scriptEngine.createBindings();
    Scanner reader = new Scanner(System.in);

    System.out.println("Please enter operator:");
    String userInput = reader.next();

    System.out.println("Please enter number:");
    int userInputNumber = reader.nextInt();

    int[] numbers = {5, 15, 12, 7, 0};

    String expression = "a" + userInput + "b";
    bindings.put("b", userInputNumber);

    for (int i = 0; i < numbers.length; i++) {
        bindings.put("a", numbers[i]);
        if ((Boolean) scriptEngine.eval(expression, bindings)) {
            System.out.println(numbers[i]);
        }
    }
}
publicstaticvoidmain(字符串[]args)引发脚本异常{
ScriptEngineManager ScriptEngineManager=新ScriptEngineManager();
ScriptEngine ScriptEngine=scriptEngineManager.GetEngineeByExtension(“js”);
Bindings Bindings=scriptEngine.createBindings();
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“请输入运算符:”);
字符串userInput=reader.next();
System.out.println(“请输入号码:”);
int userInputNumber=reader.nextInt();
int[]数字={5,15,12,7,0};
字符串表达式=“a”+userInput+“b”;
bindings.put(“b”,userInputNumber);
for(int i=0;i

对于系统控制台交互,我更喜欢使用
Scanner
而不是
BufferedReader
。对于应该在何处使用它们,有一些很好的解释。

直接将用户输入注入源代码并让其运行是非常糟糕的。这意味着用户现在可以在您的计算机上运行任何代码,这是一个很长的时间尿毒症风险

相反,您应该保留您的
if
语句,以便只保留
=
false;
if(userInput.equals(“>”){
运算符=(x,y)->x>y;

}else if(userInput.equals)(“或者只是一件小事:双函数需要3个参数(前2个用于x,y,一个用于result)和
操作符。apply(x,y)
。如果您想使用
操作符。test()
我假设正确的接口应该是
BiPredicate
是否应该是
BiFunction
BiPredicate
BiPredicate<Integer, Integer> operator = (x, y) -> false;
if (userInput.equals(">")) {
   operator = (x, y) -> x > y;
} else if (userInput.equals("<")) {
   operator = (x, y) -> x < y;
} else if

...

} else {
   System.out.println("please enter > or <");
}
for(int i = 0; i < numbers.length; i++) {
   if(operator.test(numbers[i], userInputNumber)) {
      System.out.println(numbers[i]);
   }
}