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

SESSION 9 その11
練習問題
  練習問題1:問い


練習問題 1
 
問:以下のコードのswitch文をif文に置き換えなさい。
(switch文の例(KotoTest8のKNMain.java)17行目~)
 
・・・      
017 public static void main(String[] args) {
018       // TODO code application logic here  
019    
020       //解答用変数を宣言。0で初期化  
021       int answerNum = 0;  
022    
023     //解答選択
024       //  問題です。音痴な人は誰?  
025       //  1:なぽ  
026       //  2:こと  
027       //  3:ことの隣にいた美人のおねーちゃん  
028    
029       answerNum = 1;//選んだ番号に書き換えて下さい  
030    
031       //メッセージを表示  
032       System.out.println("この中で音痴な人は誰?");  
033       System.out.println("1:なぽ");  
034       System.out.println("2:こと");  
035       System.out.println("3:ことの隣にいた美人のおねーちゃん");          
036       System.out.println("あなたの選んだ番号:" + answerNum);  
037             
038       //選択処理  
039       switch(answerNum){  
040           //答えが1の場合  
041           case 1:  
042               System.out.println("正解");  
043               System.out.println("どーせオンチですよ、ええ。");  
044           break;  
045    
046           //答えが2の場合  
047           case 2:  
048               System.out.println("不正解!!");  
049               System.out.println("吹雪の歌姫、超Cool!");  
050           break;  
051    
052           //答えが3の場合  
053           case 3:  
054               System.out.println("不正解");  
055               System.out.println("プロばりに歌が上手くてボイン" +  
056                                        "なんだってば。");  
057           break;  
058    
059         //それ以外
060           default:  
061               System.out.println("番号を1~3から選んでね");  
062           break;  
063    
064       }  
065      
066   }  
・・・    
 
黄色の部分を変更して解答して下さい。
プロジェクトを新規に作成して解答して下さい。
 
あれっ!
このテスト、
メッセージが
変わってる!?

答えも違うね!

やったー!

あたし
超クールだって!!
「KotoTest9」ね。
プロジェクト作ってね。

まだ遭難したく
ないんで。。。
えっ、
そ、そうかな?

さあ、さあ、
やっつけちゃおう!


うーんと・・・
switchをifに変えて・・・

あとは、
ifとelse if 使って・・・

条件式を
answerNum==caseの値
で書き換えていけば
いいんだよね。
そうそう。
さすが超クールだな。

お前、ほんと
クールだし。クールだし。
クールだし。クールだし。
クールだし。クールだし。
えー、なによ
その言い方あー
ケケケ

猛吹雪ー



  えへへ
あたしが
いくらクール
だからって・・・

そんなに
言われると
テレルー

・・・

オレ
遭難した?

  練習問題1:解答


練習問題1:解答(KotoTest9のKNMain.java)17行目~
 
・・・      
017 public static void main(String[] args) {
018       // TODO code application logic here  
019    
020       //解答用変数を宣言。0で初期化  
021       int answerNum = 0;  
022    
023     //解答選択
024       //  問題です。音痴な人は誰?  
025       //  1:なぽ  
026       //  2:こと  
027       //  3:ことの隣にいた美人のおねーちゃん  
028    
029       answerNum = 1;//選んだ番号に書き換えて下さい  
030    
031       //メッセージを表示  
032       System.out.println("この中で音痴な人は誰?");  
033       System.out.println("1:なぽ");  
034       System.out.println("2:こと");  
035       System.out.println("3:ことの隣にいた美人のおねーちゃん");          
036       System.out.println("あなたの選んだ番号:" + answerNum);  
037             
038       //選択処理  
039       //答えが1の場合  
040       if(answerNum == 1){  
041          System.out.println("正解");  
042          System.out.println("どーせオンチですよ、ええ。");  
043      
044       //答えが2の場合  
045       }else if(answerNum == 2){  
046          System.out.println("不正解!!");  
047          System.out.println("吹雪の歌姫、超Cool!");  
048      
049       //答えが3の場合  
050       }else if(answerNum == 3){  
051          System.out.println("不正解");  
052          System.out.println("プロばりに歌が上手くてボイン" +  
053                                      "なんだってば。");  
054      
055       //それ以外  
056       }else{  
057          System.out.println("番号を1~3から選んでね");  
058       }  
059      
060   }  
・・・    
 
黄色の部分が追加・改変部分です。
書き写して実行して下さい。

29行目のanswerNumの値を、0~3に変更して実行して見てください。
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ):answerNumが1の場合
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ):answerNumが2の場合
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ):answerNumが3の場合
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ):answerNumが「1~3以外」の場合
 

おー、いい感じじゃね。

ifでもswitchでも
実行結果は同じだよな。

 
おんなじー!

やっぱり、switch文は
if文に置き換えできる
んだね!
  やったー
 
 

     

うーん、でも・・・

if文と置き換えができるなら
switch文ってどういう時使うの?

if文はswitch文と同じ事できるよね?

でも、switch文は、if文みたいに
「以上」とか「以下」とか判定できない
でしょ?
変数も一つしか使えないし。

if文だけで十分じゃないの?

switch文の使い方か。

うーん、そうだなあ。

うーん
うーん


使い方としては・・・

switch文の方が
インデックス的(索引的)で
ちょっと見やすい
ってことかな。
(人の感じ方にもよるけど。)

ちょっとした使い方を言うと
定数を使ってcaseをインデックスに
すると見やすい
ね。

例えば、モード切替処理とかね。
if文でも
同じこと
できるけどね。
 
なるほどー。
見やすいかも!
 

switch文を定数でインデックス化した例
 
・・・      
        //定数一覧 実行モード  
        final int MODE_TITLE = 1;//タイトル実行モード  
        final int MODE_GAME = 2;//ゲーム実行モード  
        final int MODE_ENDING = 3;//エンディング実行モード  
       
        //変数  
    int modeNum = MODE_TITLE;//現在実行モード変数
       
        //実行モード別処理  
      switch(modeNum){
            //タイトル実行モードの場合  
            case MODE_TITLE:  
                System.out.println("タイトル開始");  
            break;  
     
            //ゲーム実行モードの場合  
            case MODE_GAME:  
                System.out.println("ゲーム開始");  
            break;  
     
            //エンディング実行モードの場合  
            case MODE_ENDING:  
                System.out.println("エンディング開始");  
            break;  
        }  
・・・    
 
サンプルです。実行しても動きません。



switch文は
一個しか変数が
無い場合しか
使えないけどね。。。
あとは・・・

if文みたいに同じ変数
いっぱい書かないで
すむとか。
 
確かに変数書くのは
1回だけでですむね。
  これは
テストの
解答だね。
 

 

・・・      
038       //選択処理  
039       //答えが1の場合  
040       if(answerNum == 1){  
041          System.out.println("正解");  
042          System.out.println("どーせオンチですよ、ええ。");  
043      
044       //答えが2の場合  
045       }else if(answerNum == 2){  
046          System.out.println("不正解!!");  
047          System.out.println("吹雪の歌姫、超Cool!");  
048      
049       //答えが3の場合  
050       }else if(answerNum == 3){  
051          System.out.println("不正解");  
052          System.out.println("プロばりに歌が上手くてボイン" +  
053                                      "なんだってば。");  
054      
055       //それ以外  
056       }else{  
057          System.out.println("番号を1~3から選んでね");  
058       }  
・・・    
 
if文で書いた場合、同じ変数を繰り返し書かなければならない。



あとは・・・

c言語とかだと、switch文の方が、
if文より少し処理速度が速いとか
言われてるみたいだけど。

どっちにしろ今のパソコン、処理
速過ぎだから、その差なんか、
まったく体感できないしなあ。

まあ、見やすさという点で
使い分けるといいんじゃねーかな。

はいっ。

見やすさで
臨機応変に、ね。

俺あんま
使ってないなあ。

ほどんどif文だな。

うーん。
お前、たまに
するどいこと
いうよなあ。
これから
いろいろ
使っていけば
分かるよね!

きっと!


じゃあ、これで
switch文はおしまいっ!


さっ、じゃあここらで
一服入れよう。
はーい!休憩ね!

ここまで
ありがとうございました!
あー、
おつかれ
さんしーご。。。

いっぷく
にっぷく
まだまだ
いけるよー!

 
 

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