最近は基礎を中心にやってきましたが、たまには基礎と違うジャンルの記事をという事でJavaで簡単なプログラムではありますが作ってみようかと思います。
if文とパッケージなるものを使いクイズのプログラムを作ってみます。
それでは、さっそくはじめていきましょう。
if文でクイズ・プログラムを作ってみる

クイズのプログラム「Quiz.java」を作ってみたのでそれを解説していこうと思います。
まずはどのような動作をするのか見てみましょう。
コンパイル済みの中間コード「Quiz.class」をコマンドプロンプトで実行します。
どのようなプログラムなのか説明します。
3択問題を出題し、ユーザーに入力してもらい入力した内容によって正解 or 不正解という値を返すという、クイズを実装したプログラムです。

まず1と入力してみましょう
▼このように3択問題のうち1~3をユーザーが入力してその結果をプログラムで出力するという仕組みです。
では2と入力したら
正解だったようです。このようにif文は入力の内容によって異なる出力結果を表示させるという事が出来ます。

では1~3以外の0を入力したらどうなるのでしょう
このように表示されました。
これはコードのシステム的に「1~3の番号を入力して下さい。」と自動的に出力されるわけではなく、if文を使いこのように表示されるように記述してあります。

次の章ではこのプログラムの動作の仕組みを解説していきたいと思います。
クイズ・プログラムの仕組み
それではこのクイズ・プログラムを分解してどのようなソースコードの仕組みになっているのか見ていきましょう。
▼今回の全ソースコードはこのようになります。
class Quiz //Quiz.java { public static void main(String[] args){ System.out.println("\n■猫カフェ発祥はどこの国?"); System.out.println("\n1: 米国 2: 台湾 3: 日本"); System.out.print("\n\n正解を入力>"); java.util.Scanner sc = new java.util.Scanner(System.in); int d = sc.nextInt(); if(d==1){ System.out.println("\n\n不正解!"); System.out.println("正解は2の台湾です。"); } else if(d==2){ System.out.println("\n\n正解! 1998年台北でオープンした「猫花園」が猫カフェ発祥の地"); } else if(d==3){ System.out.println("\n\n不正解!"); System.out.println("正解は2の台湾です。"); } else { System.out.println("\n\n1~3の番号を入力して下さい。"); } } }
ソースコードを上から順に見ていきましょう。
「System.out.println()」と「System.out.print()」
こちらは文字列を表示させる記述です。()の中で「”」ダブルクォーテーション (ダブルクォート) を使い文字列を囲み文字列を出力させます。
では「println」の「ln」の部分が「line」つまり行の略で改行するという動作が加わります。
- 「System.out.println()」… 出力+改行する
- 「System.out.print()」… 出力、改行なし
「¥n」
「¥n」は改行するという動作になります。ブラウザ、読み込み環境によっては「バックスラッシュ」が表示されてしまうので全角にしですが「半角円マーク」です。
コードの種類としては「\ + 特定の文字・記号」で出力表現するというエスケープシーケンスに分類されます。「\n」以外にも「\f」や「\”」などと色々あります。
「java.util.Scanner」
こちらはJava.utilというパッケージの中からScannerクラスを呼び出しているということになります。utilとはutilityを略した単語で「実用的な、便利な」という意味の機能として提供されています。
パッケージとはクラスを集めてひとまとめにしたものです。クラスはJavaにとって大事な要素です。
クラス?って感じですがここでおさらいしてみましょう。あまり説明は得意ではないですがだいたいこんなものですよという事を解説します。
Javaのようなオブジェクト志向でプログラムを作る時は必ずオブジェクトを定義するためのクラスを作ります。いわばオブジェクトの設計図がクラスです。
クラスの中にはメンバ変数、メソッドを含める事ができます。今回のような小さなプログラムなら一つのクラスで充分ですが、本格的なプログラムを作った場合は複数のクラスで連携し合って一つのソフトウェアとして構成するのです。
そのクラスをひとまとめにしたものがパッケージになります。今回使用したパッケージではjava.utilがパッケージ名でScannerがクラスになります。
パッケージ内のクラスがある場所を名前空間と言います。名前空間はクラスの名前を保管しておくために使われていてます。
クラス名は同じクラス名を持つ事ができませんが、パッケージさえわかれていれば同じクラス名を持つ事ができます。
・
・
と、前置きが長くなりましたが本題は
▼これが何を意味するか?という事です
java.util.Scanner sc = new java.util.Scanner(System.in);
簡略化して見てみましょう。だいぶわかりやすくなりました。
クラス 変数名 = new クラス();
そうです。scとは変数なんです。なのでこのようにしても意味は同じです。
java.util.Scanner sc; sc = new java.util.Scanner(System.in);
new クラス() でオブジェクトが作られて、変数名inputに値を入れたという事です。実体であるインスタンスもメモリ上に作られます。さらに(System.in) がユーザーから標準入力を受け付けるという事になります。
とりあえずこの行でscというScannerオブジェクトを作りscにユーザーからの入力を受け付けるという動作を代入しています。
「入力受付専用のScannerオブジェクトを作ったよ。オブジェクトの値はscに入ってます」
という事です。Scannerクラスはコードの最初に2つのどちらかをつければ
import java.util.Scanner; import java.util.*;
このように省略することも出来ます。
Scanner sc = new Scanner(System.in);
本格的なプログラムや何度も同じ動作を呼び出す場合はこちらの方を使い分けると良いかもしれません。
「int d = sc.nextInt()」
このコードの意味はまず「=」より右側から
「オブジェクトの値が入ったscにnextIntという機能を付けました」
という意味です。nextInt() にはキーボードから整数の文字列を受け取るという意味が含まれています。ind dのdがキーボードから受け取った値を格納するためのものです。
「if文」
「if文」は条件によって異なる出力処理をするという条件分岐的な動作をします。
if(d==1){ System.out.println("\n\n不正解!"); System.out.println("正解は2の台湾です。"); } else if(d==2){ System.out.println("\n\n正解! 1998年台北でオープンした「猫花園」が猫カフェ発祥の地"); } else if(d==3){ System.out.println("\n\n不正解!"); System.out.println("正解は2の台湾です。"); } else { System.out.println("\n\n1~3の番号を入力して下さい。"); }
今回のプログラムはこのようなコードになっていますが、「==」は関係演算子というもので、例えば「A == B」だったら「A と B は等しい」という意味を持っています。
if文は上から順に処理をしていき、trueで条件に合えば出力。falseで合わなければスルーして次の処理をするという流れです。
なのでユーザーが1を入力した場合は一番上の「d==1」の内容が出力されるといく仕組みです。「d==2」の正解がtrueならその内容を返します。
では一番下のこちらはどんな意味になるのでしょう?
else {
System.out.println(“\n\n1~3の番号を入力して下さい。”);
}
1、2、3とどの整数ともtrueではなくて整数以外の文字列ではない時に出力されるという動作です。
まとめ
まとめです。
今回は、if文で簡単なクイズ・プログラムを作ってみました。
プログラムができる人にとってはなんてことないかもしれませんが、初心者からしたら慣れていないので難しいことだらけかもしれません。
興味がある方は、試してみてください。
プログラミングをこれから覚えたい人や基本情報技術者試験を勉強する人が絶対に覚えておきたいのが2進数や16進数といった「進数の計算方法」です。
これについて初心者でもわかりやすく、図解で解説した記事があるのでよかったら参考にしてみてください。
関連記事 | 今すぐチェック


今回の記事は以上になります。最後までありがとうございました。