Java - 与If语句一起使用的布尔值

时间:2018-02-28 01:34:50

标签: java if-statement boolean

我刚开始在学校学习Java,我遇到了以下代码。我无法理解输出显示的原因:// click 'Yes' driver.findElement(By.cssSelector("div.attachment-wrapper ul.keys > li:nth-child(1) span.label")) // click 'No' driver.findElement(By.cssSelector("div.attachment-wrapper ul.keys > li:nth-child(2) span.label")) 。 由于no已更新为x100也不应更新为boolean,因此输出:false

提前谢谢

这是我的代码:

yes

3 个答案:

答案 0 :(得分:0)

因此,在检查它是否为否定之前,您将x设置为-555。然后将布尔值isNegative设置为x是否小于0,此时它将为false。您稍后在程序中更新x,以便if语句不受影响。它之所以说“不”是因为它给出的是否定的,这在整个程序中都没有更新。请记住Java从上到下运行。

我注意到的一点是,打印出yes或no的代码是在代码块中运行的,如果它是否定的。你可能想解决这个问题。

答案 1 :(得分:0)

虽然更新了整数x,但布尔值isNegative却没有。即使x稍后设置为100,isNegative已设置为true,之后一行boolean isNegative = (x<0);isNegative不再依赖于x的价值。

在下面的代码中,输出为"yes",因为在isNegative更新后x会更新。

   int x = -555;
   boolean isNegative = (x < 0);
   if (isNegative)
   {
       x = 100;
       isNegative = (x<0);
       if (isNegative)
         System.out.println("no");
      else
         System.out.println("yes");
   } 
   else
      System.out.println("maybe");

我也忽略了格式化错误,这是我第一次回答;)

答案 2 :(得分:0)

在功能上,您可以声明一个IntPredicate:

IntPredicate negative = (i)-> i < 0;

注意军事箭头操作员! :)

用法:

 negative.test (-500)
 negative.test (500)

编程中的谓词通常是一个方法/函数,它为某些输入返回一个布尔值。输入在这里是一个int,对于基本类型,有一个专门的谓词,如IntPredicate。

虽然可能有些简短的构造,但整体开销很高。比较自己:

示例代码:

   boolean isNegative = (x < 0);
   if (isNegative)
   {
       x = 100;
       if (isNegative)
           System.out.println("no");
       else
           System.out.println("yes");
   } 
   else
       System.out.println("maybe");

精益代码:

   if (x < 0)
   {
       x = 100;
       if (x < 0)
           System.out.println("no");
       else
           System.out.println("yes");
   } 
   else
       System.out.println("maybe");

谓词用法:

   IntPredicate negative = (i)-> i < 0;
   if (negative.test (x))
   {
       x = 100;
       if (negative.test (x))
           System.out.println("no");
       else
           System.out.println("yes");
   } 
   else
       System.out.println("maybe");

它确实适用于更复杂的测试,你只需要编写一次,而不是像(x <0)那样自我记录,并且可以组合一堆这样的测试:

   IntStream is = ...
   is.filter (! negative).
      filter (prime).
      filter (square).
      filter (luckyNumber).
      filter (...