2017-03-15 52 views
-4

我已经从OCA程序员评估测试中摘录了这个摘录。我稍微改了一点代码。Oracle认证合作伙伴评估代码

public class FeedingSchedule { 

    public static void main(String[] args) { 
     int x=5, j=0; 
     OUTER: for(int i=0; i<3;) 
      INNER: do { 
       i++; x++; 
       if(x>10) continue INNER; 
       x+=4; 
       j++; 
      } while(j<=2); 

     System.out.println(x); 
     } 
    } 

有人能告诉我为什么这返回-2147483639?我最初的假设是代码应该永远运行而不是退出。

任何关于代码解释的答复将不胜感激。

感谢

+3

对不起,这不是StackOverflow的工作方式。形式问题_“这是一些代码,请为我解释”_被认为是无关紧要的。请访问[帮助]并阅读[问],尤其是阅读[为什么是“有人可以帮我吗?”不是一个实际的问题?](http://meta.stackoverflow.com/q/284236/18157) –

+1

你*可以*只是把它扔进一个带有调试器和执行*的IDE中,因为它是一个易于运行的代码片段... – Makoto

+2

另外,这是废话代码。如果我有一位编写代码的程序员为我工作,我会与他/她进行认真的谈话。这是不可维护的。 –

回答

1

检查x的值。它从5开始,然后增加1,然后增加4.在某个点,它大于10,然后带有标签的继续发挥作用:x递增直到发生溢出。 溢出停止循环“Inner:... continue Inner”,因此外循环的其余部分被执行。

+0

我现在明白了。非常感谢。 – zam