2017-03-15 1 views
-4

この抜粋は、OCA Programmer Assessmentテストから抜粋したものです。コードを少し変更しました。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より大きい場合、continue with labelが表示されます。xはオーバーフローが発生するまでインクリメントされます。 オーバーフローによりループ "Inner:... continue Inner"が停止し、残りの外部ループが実行されます。

+0

私は今それを得る。どうもありがとう。 – zam

関連する問題