質問するログイン新規登録

質問編集履歴

1

追加で質問をさせていただきました。

2020/11/20 06:21

投稿

guriko
guriko

スコア1

title CHANGED
File without changes
body CHANGED
@@ -5,53 +5,89 @@
5
5
  ・それぞれサイコロを3回ずつ振り、各々その合計値を求める
6
6
  ・合計値が大きい人の勝ち
7
7
 
8
- 配列と乱数を使用して作成しているのですが、合計値を求めるコードの書き方がわからず、躓いています。
8
+ ~~配列と乱数を使用して作成しているのですが、合計値を求めるコードの書き方がわからず、躓いています。
9
9
  ご教示いただけると幸いです。
10
+ よろしくお願い致します。~~
11
+ --追加の質問--
12
+ 合計値を表示することはできました。
13
+ その後、勝敗判定や引き分け判定の処理を入れたいです。
14
+ sumは毎回初期化されてしまうため、各プレイヤーのスコアを他に保存しないといけないのですが、その書き方がわかりません。
15
+ アドバイスをいただけないでしょうか。
10
16
  よろしくお願い致します。
11
17
 
12
18
  ### 発生している問題・エラーメッセージ
13
- [1]:5 3 1
19
+ [1]:4 5 2
14
- 9 ←合計値が求められず、乱数がそのまま出力されているように見えます。
15
- [2]:2 6 3
20
+ 合計値:11
16
- 8 ←合計値が求められず、乱数がそのまま出力されているように見えます。
17
- [3]:5 2 6
18
- 5 ←合計値が求められず、乱数がそのまま出力されているように見えます。
19
21
 
22
+ [2]:2 4 5
23
+ 合計値:11
24
+
25
+ [3]:2 3 1
26
+ 合計値:6
27
+
28
+ 勝者は1回目の人で、合計値は6でした。←最後にsumに入った値が出てしまいます。
29
+ ↑毎回"1回目"と出てしまいます。
30
+
20
31
  ### 該当のソースコード
21
32
  package test;
22
33
 
23
34
  public class SaikoroGames {
24
35
 
25
- public static void main(String[] args) {
36
+ public static void main(String[] args) {
26
-
27
- // プレイヤー人数を決める
28
- int[] r = {1,2,3};
29
-
30
- int sum = 0;
31
-
32
- // 人数分ループする
33
- for(int j = 0;j < r.length;j++){
34
- System.out.print("[" + r[j] + "]" + ":");
35
- for(int i = 0;i < r.length;i++){
36
- for(int n = 0;n < 1;n++){
37
- System.out.print(dice() + " ");
38
- sum = dice() + dice() + dice();
39
- }
40
- }
41
- System.out.println();
42
- System.out.print(sum);
43
- System.out.println();
44
- }
45
- }
46
37
 
38
+ // プレイヤー人数を決める
39
+ int r[] = new int[3];
40
+
47
- // ダイス振る
41
+ //代入
42
+ r[0] = 1;
43
+ r[1] = 2;
44
+ r[2] = 3;
45
+
46
+
48
- static int dice() {
47
+ int dice = 0;
48
+ // サイコロを振る回数を代入
49
+ int count = 3;
50
+ int score = 0;
51
+
52
+ // 人数分ループする
53
+ for(int j = 0;j < r.length;j++){
54
+ System.out.print("[" + r[j] + "]" + ":");
55
+ int sum = 0;
56
+
57
+
58
+ for(int i = 0;i < count;i++){
49
- return (int)(Math.random()*6) + 1;
59
+ dice = (int)(Math.random()*6)+1;
60
+ int hokan = dice;
50
- }
61
+ sum += hokan;
62
+
63
+ System.out.print(hokan + " ");
51
64
  }
65
+ score = sum;
66
+ System.out.println();
67
+ System.out.println("合計値:" + sum);
68
+ System.out.println();
52
69
 
70
+
71
+ }
72
+ // 勝敗判定
73
+ int minCnt = 100;
74
+ int minCntPlayer = 0;
75
+ for(int i = 0; i < r.length; i++) {
76
+ if(minCnt > r.length + score) {
77
+ minCnt = r.length + score;
78
+ minCntPlayer = r[i];
79
+ }
80
+ }
81
+ System.out.println("勝者は" + minCntPlayer + "回目の人で、合計値は" + score + "でした。");
82
+ }
83
+
84
+
85
+
86
+ }
87
+
88
+
53
89
  ### 試したこと
54
90
 
55
- 配列と乱数を用いて合計値の求め方についてをググったなど致しましたが、せんでした。
91
+ sumを代入する変数を複数作りましたが、最後に入った値が出てしまいました。
56
92
 
57
93
  ### 補足情報(FW/ツールのバージョンなど)