広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 9 その25
練習問題 つづき


何で、こんなことに
なっちゃったのー!!

処理が無限ループしたんだよ。

カウンター用の変数を
毎回1づつ減算し続けてるだろ。

0からどんどん減らしてるんだから
永久に1000以上になる訳が無い。
怖いよー!
まあまあ。

大丈夫だって。

気をつけて
ブログラミング
しような。
 

無限ループになった原因
 
・・・      
020  
    カウンターは
0から始まっている
  カウンターが
1000未満の間、実行
  ループする度に
カウンターを-1する
   
for(    int i = 0;       i < 1000;       i--     ){
        0、-1、-2、-3・・・
 
・・・      
ループすればするほど、カウンター用変数は
マイナスになっていくので処理は永久に終わらない


そっか・・・
ちゃんと減算にあわせた
条件式を考えて作らないと
だめだよね。

条件式、全部見直しするね!


えーと、カウンターの初期値は
今度は1000になるのかな・・・

条件も「1000未満なら」だったのを
正反対の意味にしないと・・・
がんばってねー
適当
すぎたよね・・・

ごめんなさい。


  練習問題3:解答


練習問題2 ことの解答(KotoTest10のKNMain.java)17行目~
 
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
020            for(int i = 999;i >= 0;i--){  
021            //for(int i = 0;i < 1000;i++){  
022      
023                      //もし i が100だったら  
024                      if(i == 100){  
025                            //ロケットを打ち上げ失敗メッセージ  
026                            //System.out.println("打ち上げに失敗。" +  
027                            //                            "それはアメリカンドッグでした。");  
028                            //  
029                            //System.out.println("ロケット計画を中断します。");  
030                            //    
031                            //break;  
032                              
033                            //休日メッセージ  
034                            System.out.println("休日のため、" +  
035                                                   "ロケットの打ち上げはありません。");  
036      
037                            continue;  
038                     }  
039      
040                     //現在のカウントをロケットの号数に補正  
041                     int num = i + 1;  
042                     //int num = 1000 - i;  
043      
044                   //ロケットを打ち上げるメッセージを表示
045                     System.out.println("ロケット" + num +  
046                                                 "号機を打ち上げました。");  
047            }  
048      
049            //終了メッセージ  
050            System.out.println("計画完了");  
051      
052   }  
・・・      
黄色の部分を書き写して実行して下さい。
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ)
 
これで、どうかな!
出来てると思うんだけど。

カウンターの初期値を1000にすると、
表示の補正で1001号機から
始まっちゃうから初期値は999にしたよ。


あとは条件も、
一番小さい値が最後の表示だから、
「0以上」の間ループする
に変更したよ。
ブロックの中は
変えてないよ!
 
OK、OK。

ばっちりじゃね。

加減算のイメージを
作ってみたよ。
 
加減算のイメージ
 
int i = 0;i < 1000;i++
i 0 < 1000
スタート + 1 + 1 + 1 + 1 + 1 ・・・        
  0から               999まで 1000
 
 
 
int i = 999;i >= 0;i--
0 >=               999 i
        ・・・ - 1 - 1 - 1 - 1 - 1 スタート
-1 0まで               999から  
 
どっちも0~999の1000機


まあ、当面は
変数++
でやるから
使う機会は少ないけどね。

たまには意味のない
テストもいいだろ。
意味すごいあったよ!

条件式の変え方とか
なんか、いろいろ
分かった気がする!
寄り道も
いいだろ。
無限ループは
やだけど。


でも、なぽちゃん・・・

もしかして、あたしが
無限ループになるの
気付いてたんじゃ・・・
なんか
素振りがー
  ドキッ
 
あっ、
じゃあ、ここらで
また休憩にしよかね。


  ぴゅうー
さー、
休憩
休憩
やっぱりー

 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告