--/--/-- (--) スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 |


2011/07/04 (Mon) Javaでロト6シミュレーターを作る

演習課題:ロト6シミュレーターを作る

課題の補足説明
①ユーザーから入力させる数字は1~43としそれ以外は再入力させる。
②入力番号も重複しないようにする。
③当選番号は重複した値が出ないようにする。
④ボーナス数字(2等)も考慮する(※)

※LinkedListクラスの講義での課題なのでLinkedListクラスを利用する
※ボーナス数字は発展課題


演習課題を受けて作成したプログラミングの方針
①LinkedListを作成し1~43の数字を格納する
②ユーザーに6つの数字を入力させLinkedListに格納する
③LinkedListをシャッフルする(Collectionsクラス)
④当選番号をLinkedListに格納する
⑤当選番号と入力した数字を表示する
⑥当選番号と入力数字を照合し当選数をカウントする

実際に記述したコードは「続きを読む」から。
(模範解答と比べるといくらか無駄のあるコードです(^^;))

 



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;

public class Loto6 {
public static void main(String[] args) throws IOException {
// 1~43の数値を格納するためのリンクリスト(変数loto)を作成
LinkedList<Integer> loto = new LinkedList<Integer>();
// 1~43の数値を格納する
for (int i = 1; i <= 43; i++) {
loto.add(i);
}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("数字を6つ入力してください(1~43)");
// 入力した数値を格納するためのリンクリスト(変数input)を作成
ArrayList<Integer> input = new ArrayList<Integer>(6);
int count = 1; // リンクリストに格納された個数をカウントする
// リンクリストのサイズが6になるまで繰り返し数値を入力する
// 数値のイレギュラーはif文で除外する
// 数値以外が入った場合は例外処理をしてcontinueで戻す
while (input.size() < 6) {
int i = 0; // 入力した数値を格納する変数
try {
System.out.print(count + "番目:");
i = Integer.valueOf(br.readLine());
} catch (Exception e) {
System.out.println(" ※数値を入力してください。");
continue;
}
if (!(input.contains(i))) { // 同じ数値が入らないようにする
if (i > 0 && i < 44) {
input.add(i);
count++;
} else {
System.out.println(" ※1~43までの数値を入力してください。");
}
} else {
System.out.println(" ※その数値はすでに入力されています。");
}
}
// 当選番号が格納されたリンクリストをシャッフルする
Collections.shuffle(loto);
System.out.println("あなたの入力した番号");
// ユーザーが入力した番号を表示
for (int i = 0; i < 6; i++) {
System.out.print(input.get(i));
System.out.print("\t");
}
// 当選番号を格納するリンクリスト(変数loto2)を作成
LinkedList<Integer> loto2 = new LinkedList<Integer>();
System.out.println("");
System.out.println("当選番号(最後の数字はボーナス数字)");
// poll()メソッドでget&removeを行い当選番号を取得&表示
// 6+1のボーナス数字込み
for (int i = 0; i < 7; i++) {
loto2.add(loto.poll());
System.out.print(loto2.get(i));
System.out.print("\t");
}
int count2 = 0; // 当選個数をカウントする変数
// 当選数値をカウントする(当選数値リストに入力数値が含まれているかどうか)
for (int i = 0; i < 6; i++) {
if (input.contains(loto2.get(i))) {
count2++;
}
}
System.out.println("");
System.out.print("当選等級:");
// 当選等級を表示するスイッチ文
switch (count2) {
case 3:
System.out.println("5等");
break;
case 4:
System.out.println("4等");
break;
case 5:
boolean b = false;
for (int i = 0; i < 6; i++) {
if (loto2.get(6) == input.get(i)) {
System.out.println("2等(ボーナス数字当選)");
b = true;
break;
}
}
if (b == false) {
System.out.println("3等");
}
break;
case 6:
System.out.println("1等");
break;
default:
System.out.println("はずれ");
break;
}
System.out.println("当選個数:" + count2 + "個");
}
}


実行結果
数字を6つ入力してください(1~43)
1番目:1
2番目:1
 ※その数値はすでに入力されています。
2番目:8
3番目:45
 ※1~43までの数値を入力してください。
3番目:42
4番目:19
5番目:abc
 ※数値を入力してください。
5番目:33
6番目:25
あなたの入力した番号
1 8 42 19 33 25
当選番号(最後の数字はボーナス数字)
19 11 27 42 32 24 22
当選等級:はずれ
当選個数:2個

プログラミング | trackback(0) | comment(0) |


<<【試作版】Javaアプレットでビンゴゲーム | TOP | JAVA応用6日目 課題(Mapインターフェイス2)>>

comment











管理人のみ閲覧OK


trackback

trackback_url
http://kononushi.blog46.fc2.com/tb.php/527-ca9ccbb5

| TOP |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。