🏔️
[Java]GitHubにアップされているJavaソースコードを解析 (備忘録)
1.はじめに
Java
の理解を深めるために、他のエンジニアが作成したソースコードを解析してみました。
一部ソースコードを、自分なりに修正しています。
2.解析プログラム
Game.java
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
// 標準入力(通常はキーボード)からの入力内容を受け付ける
Scanner scanner = new Scanner(System.in);
int score = 0;
String[] questions = {
"ラザニアが大好きなオレンジ色の猫の名前は?",
"映画「ダークナイト」で、ジョーカーを演じた俳優の名前は?",
"映画「マッドマックス2」の影響を受けて作られた日本の漫画は?"
};
String[] answers = {
"ガーフィールド",
"ヒース・レジャー",
"北斗の拳"
};
String[] hints = {
"ヒント:オーディーという名前の犬が、オレンジ色の猫の友達。",
"ヒント:オーストラリア出身。",
"ヒント: 「ひでぶ」「あべし」といった断末魔の叫び。"
};
// 配列questionsの要素数を取得
int numQuestions = questions.length;
System.out.println("クイズを始めます。");
System.out.println("問題数は" + numQuestions + "問です。");
while (true) {
/*
配列の要素数と生成した乱数を掛け合わせ、
0 以上 numQuestions 未満の範囲内の整数値を無作為に生成
int 型にデータ型変換することで、小数点以下を切り捨て
*/
int randomIndex = (int) (Math.random() * numQuestions);
// 生成された値を使用し、配列から要素を取得
String selectedQuestion = questions[randomIndex];
String correctAnswer = answers[randomIndex];
String hint = hints[randomIndex];
// 質問を表示
System.out.println("質問:" + selectedQuestion);
// キーボードからの入力内容を1行読み取る
String userAnswer = scanner.nextLine();
// 回答内容が正しいか判定
if (userAnswer.equals(correctAnswer)) {
System.out.println("正解!");
score++;
} else {
System.out.println("残念! ヒントは要りますか? (yes/no)");
// キーボードからの入力内容を1行読み取り、小文字に変換
String giveHint = scanner.nextLine().toLowerCase();
if (giveHint.equals("yes")) {
System.out.println(hint);
} if (!giveHint.equals("yes") && !giveHint.equals("no")) {
System.out.println("YesかNoで答えてください");
}
}
System.out.println("クイズを続けますか? (yes/no)");
// キーボードからの入力内容を1行読み取り、小文字に変換
String playAgain = scanner.nextLine().toLowerCase();
// yes以外の場合、while文から抜ける
if (!playAgain.equals("yes")) {
break;
}
}
System.out.println("あなたの得点は、" + score + "点です");
System.out.println("参加ありがとう!");
}
}
3.参考
・使用ソースコード
・キーボードから入力された値を取得する
・Javaのlengthとは?文字列や配列の長さを取得するlengthの使い方
・Java Math.random() メソッド
・JavaのScannerクラスのnextLineメソッドの使い方を現役エンジニアが解説【初心者向け】
・equals/equalsIgnoreCaseメソッド
4.その他
・実行環境
Discussion