我刚开始在学校学习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
已更新为x
,100
也不应更新为boolean
,因此输出:false
?
提前谢谢
这是我的代码:
yes
答案 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 (...