if-else语句的意外结果

-3 java if-statement

这是我遇到的子程序:

int x=3,y=9;
if(x>=y)
  if(y>0)
     x=x*y;
  else if(x<4)
      x=x-y;
Run Code Online (Sandbox Code Playgroud)

我猜我会得到-6作为答案.相反,我得到3作为答案.谁能告诉我为什么?

izo*_*ica 6

我的建议:即使在1行if语句周围也要添加大括号.当然好的缩进也可以为你节省很多头痛.在这种情况下,你会感到困惑的else if是,实际上是第二个而不是第一个if.所以,你做一个否则,如果要if(y>0)不要if(x>=y).