練習問題 つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
今回のやり方は
既存の処理を、
関数で「分離」する
時の例ね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
参考に
してねー |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
まず、関数の「枠」を
作っちゃおう。
引数は無くていいよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えーと、関数名を
checkAnswerData()って
書けばいいんだね。
ブロックの中は空っぽね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
メイン関数の
下でいいや。 |
 |
|
 |
はいっ。 |
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(){ |
|
183 |
|
|
|
184 |
|
} |
|
・・・ |
|
|
|
|
関数の枠を作る |
|
黄色の部分を書き写して下さい。 |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
次に、関数のブロックに
今回移したい処理を
コピペしちゃおう。
今回は
1問目のcase 0 の処理を
コピペしよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えっ、えー!
エラーだらけに
なっちゃってるよー。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
まったくもってー
気にしないー。 |
 |
|
 |
真っ赤っか
だよー |
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(){ |
|
183 |
|
|
|
184 |
|
//解答チェック |
|
185 |
|
if(inputNum
== 3){ |
|
186 |
|
System.out.println("やったね!正解"); |
|
187 |
|
correctTotal += 1;//正解数加算 |
|
188 |
|
}else{ |
|
189 |
|
System.out.println("残念!不正解"); |
|
190 |
|
} |
|
191 |
|
|
|
192 |
|
} |
|
・・・ |
|
|
|
|
処理内容を写す |
|
黄色の部分のように100~106行目をコピペして下さい。 |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
関数のエラーを解消していこう。
エラーの原因はこの2つだ。
・宣言されていない変数がある
・戻り値が無い |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
なるほど。
この赤い変数は、関数の
中で宣言されてないもんね。
戻り値の型も、
int型で定義してるのに
まだ戻り値がないね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
そいうこと
ですのー。 |
 |
|
 |
そいうこと
ですかー。 |
|
|
|
 |
エディタウィンドウ |
|
|
問題解消! |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
まず、宣言されてない
変数を宣言しちゃおう。
これには引数を使う。
コピペした処理の内容を
よく見てくれ。
このエラーの変数は、
なんで宣言されて
いないんだ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
え、えーと・・・
そっか!
これはメイン関数で
宣言された変数なんだね!
この変数の値が
関数の処理には必要なんだ。
変数correctTotal。
正解数の加算に必要でしょ。
あとは、問題をチェックするから
問題の入力番号。
変数inputNumね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(){ |
|
183 |
|
|
|
184 |
|
//解答チェック |
|
185 |
|
if(inputNum
== 3){ |
|
186 |
|
System.out.println("やったね!正解"); |
|
187 |
|
correctTotal += 1;//正解数加算 |
|
188 |
|
}else{ |
|
189 |
|
System.out.println("残念!不正解"); |
|
190 |
|
} |
|
191 |
|
|
|
192 |
|
} |
|
・・・ |
|
|
|
|
呼出元から受け取りたい値を考える |
|
黄色はメイン関数にある変数 |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
その2つの変数を引数に書こう。
これで、変数の宣言と
値を貰うことが同時にできる。
関数を区別するために、
引数は日本語ローマ字に
名前を変えてね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えっと、
正解数の変数は
seikaiGoukei
にして・・・
問題の入力番号は
kaitouBangou
でいいかな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
別の関数だから
そのままでも
いけるけどね。 |
 |
|
 |
どっちも
int型ね。 |
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(int
kaitouBangou,int
seikaiGoukei){ |
|
183 |
|
|
|
184 |
|
//解答チェック |
|
185 |
|
if(inputNum
== 3){ |
|
186 |
|
System.out.println("やったね!正解"); |
|
187 |
|
correctTotal += 1;//正解数加算 |
|
188 |
|
}else{ |
|
189 |
|
System.out.println("残念!不正解"); |
|
190 |
|
} |
|
191 |
|
|
|
192 |
|
} |
|
・・・ |
|
|
|
|
引数を書く |
|
セッションでは引数名を呼出元と変更して書きます
(変更しないでもできます)
inputNum → kaitouBangou
correctTotal → seikaiGoukei |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これで、呼び出し元から
2つの値を受け取れる
ようになったね。
という訳で、
エラーになってる変数名を
引数名に全部置き換えよう。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
間違えないように
慎重にね! |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
えっとー、
引数と同じように、
日本語ローマ字の
変数名に変えれば
いいんだね? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(int
kaitouBangou,int
seikaiGoukei){ |
|
183 |
|
|
|
184 |
|
//解答チェック |
|
185 |
|
if(kaitouBangou
== 3){ |
|
186 |
|
System.out.println("やったね!正解"); |
|
187 |
|
seikaiGoukei
+= 1;//正解数加算 |
|
188 |
|
}else{ |
|
189 |
|
System.out.println("残念!不正解"); |
|
190 |
|
} |
|
191 |
|
|
|
192 |
|
} |
|
・・・ |
|
|
|
|
変数を、対応する引数名に変更する |
|
色のついた部分を変更してください。
inputNum → kaitouBangou
correctTotal → seikaiGoukei |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
それで、
引数を使って処理を
実行できるようになった。
あとは・・・
今回の場合は、
加算した正解の合計数
を戻してやらないとな。
戻り値を書けば、
分離の一段階目完了。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
やたっ。 |
 |
|
 |
戻り値は
大丈夫だろ。 |
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(int
kaitouBangou,int
seikaiGoukei){ |
|
183 |
|
|
|
184 |
|
//解答チェック |
|
185 |
|
if(kaitouBangou
== 3){ |
|
186 |
|
System.out.println("やったね!正解"); |
|
187 |
|
seikaiGoukei
+= 1;//正解数加算 |
|
188 |
|
}else{ |
|
189 |
|
System.out.println("残念!不正解"); |
|
190 |
|
} |
|
191 |
|
|
|
192 |
|
//結果を返す |
|
193 |
|
return
seikaiGoukei; |
|
194 |
|
} |
|
・・・ |
|
|
|
|
結果の値が必要な場合は戻り値を書く |
|
黄色の部分を書き写して下さい。 |
|
|
 |
|
 |
|
|
手っ取り早く
やるならね。
correctTotal
inputNum
をそのまま
引数名にすれば
いきなりエラー
解消できるよ。
おしまい。 |
 |
|
 |
なんで
小声なの?
|
|
|
2問目の
正解は「1番」
だよ・・・。
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
でも・・・
なぽちゃん。
この関数は
正解番号が「3番」しか
チェックできないよ。
2問目とかに使ったら
正解が3番でチェックが
おかしくなっちゃうよ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
だったら、
正解番号も
「分離」してやれば
いいじゃん。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
ところてん
とうふ
こんにゃく
ましまろ
ぼいんぼいん
共通してるのは
なあんだ? |
|
|
|
 |
|
 |
|
クイズゲーム 完成(モード別処理)
解答チェック処理追加中
(KotoQuizのKQMain.java)180行目~ |
|
・・・ |
|
|
|
180 |
|
} |
|
181 |
|
|
|
182 |
|
private
static int checkAnswerData(int
kaitouBangou,int
seikaiGoukei){ |
|
183 |
|
|
|
184 |
|
//解答チェック |
|
185 |
|
if(kaitouBangou
== 3){ |
|
186 |
|
System.out.println("やったね!正解"); |
|
187 |
|
seikaiGoukei
+= 1;//正解数加算 |
|
188 |
|
}else{ |
|
189 |
|
System.out.println("残念!不正解"); |
|
190 |
|
} |
|
191 |
|
|
|
192 |
|
//結果を返す |
|
193 |
|
return
seikaiGoukei; |
|
194 |
|
} |
|
・・・ |
|
|
|
|
解答番号
3 がコードに直接書き込まれているため
1問目以外のチェックができない。
どうすればいい? |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
分離???
使う???
・・・あ。
分かったかも!! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
がんばってねー
合言葉は
ぼいんぼいん
に決まりー
ウヒヒ |
 |
|
 |
ありがとっ!
頭を柔らかくね! |
|
|
あ、そっれ!
頭をー
ぼいん
ぼいんー |
 |
|
 |
もおー!
うーるさーいー |
|
|
ぼいん
ぼいん |
 |
|
 |
ぼいん
ぼいん |
|
|
ぼ・・い・・・ |
 |
|
|
もう二度と
しない・・・
スマン・・・ |
 |
|
 |
な、なんで
あたしに
謝るのー!!!
さいてー!
さいてー!
さいてー! |
|
|