初心者がよくする間違い つづき |
|
 |
|
 |
|
クイズゲーム完成 解答チェック関数化
(KotoQuizのKQMain.java)161行目~
(エラー例のために一部改変) |
|
・・・ |
|
|
|
161 |
|
/** |
|
162 |
|
*
解答チェック処理 |
|
163 |
|
*
@param seikaiBangou 正解の番号 |
|
164 |
|
*
@param kaitouBangou 入力番号 |
|
165 |
|
*
@param seikaiGoukei 正解数 |
|
166 |
|
*
@return seikaiGoukei 正解数 |
|
167 |
|
*/ |
|
168 |
|
private
static int checkAnswerData(int
seikaiBangou,int
kaitouBangou ,int
seikaiGoukei){ |
|
169 |
|
|
|
170 |
|
//解答チェック |
|
171 |
|
if(kaitouBangou
== seikaiBangou){ |
|
172 |
|
System.out.println("やったね!正解"); |
|
173 |
|
kaitouBangou
+= 1;//正解数加算 |
|
174 |
|
}else{ |
|
175 |
|
System.out.println("残念!不正解"); |
|
176 |
|
} |
|
177 |
|
|
|
178 |
|
//結果を返す |
|
179 |
|
return
kaitouBangou; |
|
180 |
|
} |
|
・・・ |
|
|
|
|
エラーの場所を探してみて下さい。
写す必要はありません。 |
|
|
 |
|
 |
|
|
行数が
少ないから
簡単だろ。 |
 |
|
 |
えー・・・。
簡単じゃないよー。
うーん、
どこだろう。 |
|
|
|
|
 |
|
|
|
|
 |
 |
 |
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そうそう、おまけついでに
もう1つエラーを見ておこう。
このコードを見てくれ。
これは前回のクイズゲームの
解答チェック処理関数を
変更したものなんだけど、
間違えてる部分があるんだ。
探してみてくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
解答チェック処理だから・・・。
入力番号と正解番号を
チェックして、
正解と不正解の処理をする・・・
別にどこもおかしくないと
思うけど・・・。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
クイズゲーム完成 解答チェック関数化
(KotoQuizのKQMain.java)161行目~
(エラー例のために一部改変) |
|
・・・ |
|
|
|
161 |
|
/** |
|
162 |
|
*
解答チェック処理 |
|
163 |
|
*
@param seikaiBangou 正解の番号 |
|
164 |
|
*
@param kaitouBangou 入力番号 |
|
165 |
|
*
@param seikaiGoukei 正解数 |
|
166 |
|
*
@return seikaiGoukei 正解数 |
|
167 |
|
*/ |
|
168 |
|
private
static int checkAnswerData(int
seikaiBangou,int
kaitouBangou ,int
seikaiGoukei){ |
|
169 |
|
|
|
170 |
|
//解答チェック |
|
171 |
|
if(kaitouBangou
== seikaiBangou){ |
|
172 |
|
System.out.println("やったね!正解"); |
|
173 |
|
kaitouBangou
+= 1;//正解数加算 |
|
174 |
|
}else{ |
|
175 |
|
System.out.println("残念!不正解"); |
|
176 |
|
} |
|
177 |
|
|
|
178 |
|
//結果を返す |
|
179 |
|
return
kaitouBangou; |
|
180 |
|
} |
|
・・・ |
|
|
|
|
黄色の部分は、本来は
正解数(seikaiGoukei)だが
入力番号(kaitouBangou)になっている。 |
|
|
|
 |
|
 |
|
|
この人、
変数名を
勘違いしたの
かもねー |
 |
|
 |
あたし
やりそう! |
|
|
|
|
 |
|
|
|
|
 |
 |
 |
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
このコードの間違いは
変数の書き間違いだ。
「正解数」の変数を書かなきゃ
いけない所に間違えて、
「入力番号」の変数を書いてる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
入力番号に1加算して
戻り値で戻したら・・・
正解数が
「入力番号+1」の数に
なっちゃう!
滅茶苦茶だ! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
注意しても
やっちゃう
だろうけど。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
これは、
見つける難易度が高いエラーだ。
違う変数を書いたらロジックが
全く変わっちゃうからね。
プログラムが訳の分からない
動きをして原因を調べるのが大変。
この原因になるのは、
単なる書き間違いに、
勘違いや思い込み。
それから
ロジック自体の間違い・・・
初心者に限らず誰でもする
可能性があるから気をつけよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
そうか、
思い込みの
場合もあるんだ。
調べるの
難しそうー。 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これで
今回のエラーの解説は
全部おしまい。
初心者が起こしやすい
間違いをまとめると
こんな感じ。
どれも混乱が原因の元に
なってるからね。
読みやすいコードを
書くように心がけよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
はいっ!
ごちゃごちゃ
しないように
気をつけます。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
おっ、
いい返事。 |
 |
|
 |
もう
大丈夫です! |
|
|
|
 |
|
 |
|
起こしやすい間違いのまとめ |
|
初心者がよくする間違い |
・ブロックの整合性 |
・文字の打ち間違いや見間違い |
・制御文の書式間違い |
・間違いの場所の思い込み |
|
|
誰でも起こす可能性のある間違い |
・変数の書き間違い |
|
|
対応のコツ |
・デバッグのコツを掴む |
・エラーの原因を探すコツを掴む |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
はいっ!
ありがとうございました。
続きがんばるぞ! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
ゆっくりで
いいからね。 |
 |
|
 |
よーし!
クイズゲーム
作るぞ! |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
なぽちゃん、
大変、大変っ!
今度こそ
本当にコンピューター
壊れちゃった! |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
ぽっぽー |
|
 |
あわわわ
たいへんっ。 |
|
俺が壊して
やろうか? |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
今度こそ
本当だって!!
だってだって、コード見て!
どこも間違って無いでしょ。
「初心者がよくする間違い」も
全部確認したよ!
なのに変な動きをするの! |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
ぽっぽー
ぽっぽー |
|
 |
あわあわ
たいへん
なんだってー。 |
|
こほん。
鳩ぽっぽ
になってるよ。 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そこに書くのは
「正解数」の変数でしょ。
「入力番号」の変数
書いてどうするの。
例とまったく同じ
間違いして
どうするの! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あれっ・・・?
本当だね・・・
変数が間違えて
たんだねえ・・・ |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
あれは正解
じゃなくて
間違いだから!
全部ごっちゃに
なってるでしょ!
|
 |
|
 |
あれえ・・・? |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
なぽちゃん、
すごーい!!
ちょっとコード見ただけで
間違いが分かるんだ!
すごい!すごい! |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
すごーい、
超能力みたい! |
|
他人事
みたいに
言うなー! |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あ、じゃあ、
なぽちゃん、第2問!
このエラーの原因は
分かるカナ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
エラーを
クイズにするなっ!
もおっ、ダメ!
少し自分で悩みなさい! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
はーい。。。 |
 |
|
 |
教えてくん
だめ! |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
・・・・・
・・・・・
ねえ、ねえ・・・
ことちゃん、大丈夫?
やっぱり
コード見てあげるう~ |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ありがとー。
でも、
甘やかしちゃだめ!
分からない時は聞くから
そこで休んでてね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あー!
こっちが気を使って
やってるのに~・・・
大体、お前は・・・
・・・ |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
もおー、
寂しがりやなんだからー。
あたしもなぽちゃん
大好きだからね、
今は、ちょっと後ろ・・・
もうちょっと・・・そこっ!
そこら辺で遊んでてね。
いい子だから、
目の届く所にいてねー。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あ・・・そうくるんだ・・・
・・・クイズです。
ことは1人で
クイズゲームを
作れるでしょーか?
1:作れない
2:作れない
3:作れない
ククク |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あーん、そんなこと
言わないでー!
ごめんなさーい!
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|