我是Java世界的新手,目前正在学习IF语句。
在我正在使用的教科书中,它要求我“在不使用任何嵌套的情况下重写以下嵌套的if语句”。
现在,我有两个问题。第一个是关于我是否以正确的顺序读取这个,第二个是关于第1行和第2行是否存在冲突条件(矛盾)。他们要求我重写的问题是:
if ( a < b )
if (a >= b)
x = z;
else
x = y;
else
x = z;
由于我对if语句的理解有限,顺序可能如下:
a
小于b
,则执行第一个语句(这是另一个if语句),如果条件为假,则执行SECOND else语句。a
等于或大于b
,则执行附带的语句,如果条件为false,则执行第一个else语句。到目前为止,我是否正确地阅读了此内容?如果我难以理解,我会道歉。
现在谈到第二个问题;如果第一个if语句出现为真(a
小于b
)当第一个条件已经为真时,a
可能大于或等于b
?这不会有冲突吗?
感谢您的帮助:)
答案 0 :(得分:0)
你理解正确。
代码实际上等同于:
if (a < b)
x=y;
else
x=z;
如果&lt; b,肯定(a&gt; = b)是假的,你去第一个else语句。如果不是 - 则运行第二个其他语句。
对于每种语言和每种变量类型都是如此,但在某些情况下,如果您不一致地重载运算符,则可能不正确。 另一种情况是,如果你实现了运算符a&lt; b,这样它会改变a的值。 但是,这种情况不应该存在于普通代码中。
答案 1 :(得分:0)
遵循您发布的代码的逻辑,它等同于:
if (a < b)
x = y;
else
x = z;