質問編集履歴

3

質問の変更

2023/05/05 03:03

投稿

oas12
oas12

スコア1

test CHANGED
File without changes
test CHANGED
@@ -7,20 +7,40 @@
7
7
 
8
8
  ここに質問の内容を詳しく書いてください。
9
9
  java独学一か月目の者です。
10
- じゃんけんゲームを作る課題をしているのですが、whileのところがわかりません。
11
- 1.whileの最後falseになり、2回目以降はずっとfalseまま。一回目のwhileループ「最初はグー、じゃんけんほい」、2回目のループ「あいこで」表示させ
10
+ じゃんけんゲーム1回目のwhileで「最初はグー、じゃんけんほい」と表示し最後でboolean型の変数isFirstをfalseに変えます。2回目以降はfalseままでループし、「あいこでしょ表示させたいです
11
+ 一回目のwhileは勝ち負けならそこで終わり、あいこならisFirstをfalseに変えて、2回目に移動。
12
+ 2回目のwhileはあいこならループし、勝ち負けなら終わりだと思い、コードを書いたのですが。根本的に間違っていますか。
13
+ プロの方なら、以下の問題をどう回答しますでしょうか。コードを教えて頂きたいです。
14
+ 問題文↓
15
+ 1. 初期化
16
+ ランダムクラスの準備をする
17
+ キーボード入力の準備をする
12
- 2.自分保持する変数を用意して入力した値代入する
18
+ 文字列型配列 names を用意してグーチョキバー設定する
19
+ 2. 開始メッセージ(「じゃんけん勝負 グーチョキパーを数字で入力してね…」)を表示する
13
- 3.相手手を保持する変数 を用意し値を乱数(0~2)に決め
20
+ 3. boolean型の変数 isFirst を用意し、trueで初期化す
14
- 4.「〇〇(COM)と〇〇(Player)で...」を表示する
15
- 5.player と com を比べて、その値で勝敗判定を行う
16
-   player と com が同じとき、「あいこだよ!」を表示する
17
-   Playerが負けたとき、「あなたの負け」を表示し、breakで無限ループを抜ける
18
-   Playerが勝ったとき、「あなたの勝ち」を表示し、breakで無限ループを抜ける
19
- 6.表示を改行する
20
- 7.isFirst falseにする(2回目以降になる)
21
+ 4.isFirst はwhileの最後でfalseになり、2回目以降はずっとfalseのまま
21
22
 
23
+ これにより、 isFirst で1回目とそれ以外の判定をすることができる
24
+
22
- 指定されたwhileループを使うやり方わかりません。
25
+ while(true)で無限ループを生成し、勝敗ついたらbreakで無限ループを抜ける
26
+
23
- どなたか教えていただないでしょうか。
27
+ 5.じゃんんの掛け声を表示する
28
+ 6.isFirst がtrue(1回目のループ)のときは「最初はぐー、じゃんっけんっ:」を表示する
29
+ 7.isFirst がfalse(2回目以降のループ)のときは「あいこでっ」を表示する
30
+ 8.自分(プレイヤー)の手を保持する変数 player を用意して入力した値を代入する
31
+ 9.相手(コンピュータ)の手を保持する変数 com を用意して、値を乱数(0~2)に決める
32
+ 10.「〇〇(COM)と〇〇(Player)で...」を表示する
33
+ 11.player と com を比べて、その値で勝敗判定を行う
34
+ 12.player と com が同じとき、「あいこだよ!」を表示する
35
+ 13.Playerが負けたとき、「あなたの負け」を表示し、breakで無限ループを抜ける
36
+ 14.Playerが勝ったとき、「あなたの勝ち」を表示し、breakで無限ループを抜ける
37
+ 15.表示を改行する
38
+ 16.isFirst をfalseにする(2回目以降になる)
39
+
40
+
41
+
42
+
43
+
24
44
 
25
45
  ### 発生している問題・エラーメッセージ
26
46
 
@@ -58,8 +78,17 @@
58
78
  isFirst = false;
59
79
  System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
60
80
  System.out.println("あいこだよ");
61
- System.out.print("あいこで:")
81
+ System.out.print("あいこで:");
82
+ } else if ((com == 0 && myhand == 1) || (com == 1 && myhand == 2) || (com == 2 && myhand == 0)) {
83
+ System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
84
+ System.out.println("あなたの負け");
85
+ break;
86
+ } else if ((com == 1 && myhand == 0) || (com == 2 && myhand == 1) || (com == 0 && myhand == 2)) {
87
+ System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
88
+ System.out.println("あなたの勝ち");
89
+ break;
90
+
62
- while(isFirst){
91
+ }while(isFirst){
63
92
  } if ((com == 0 && myhand == 1) || (com == 1 && myhand == 2) || (com == 2 && myhand == 0)) {
64
93
  System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
65
94
  System.out.println("あなたの負け");
@@ -73,7 +102,7 @@
73
102
  }
74
103
  }
75
104
  }
76
- }
105
+
77
106
  ```
78
107
 
79
108
  ### 試したこと
@@ -82,6 +111,41 @@
82
111
  ここに問題に対して試したことを記載してください。
83
112
 
84
113
  ### 補足情報(FW/ツールのバージョンなど)
114
+ 勝ちなら
115
+ じゃんけん勝負
116
+ グーチョキパーを数字で入力してね
117
+ 0:グー
118
+ 1:チョキ
119
+ 2:パー
120
+ 最初はぐー、じゃんけん:1
121
+ パー(COM)とチョキ(Player)で…
122
+ あなたの勝ち
123
+
124
+ 負けなら
125
+ じゃんけん勝負
126
+ グーチョキパーを数字で入力してね
127
+ 0:グー
128
+ 1:チョキ
129
+ 2:パー
130
+ 最初はぐー、じゃんけん:1
131
+ グー(COM)とチョキ(Player)で…
132
+ あなたの負け
133
+
134
+ あいこなら
135
+ じゃんけん勝負
136
+ グーチョキパーを数字で入力してね
137
+ 0:グー
138
+ 1:チョキ
139
+ 2:パー
140
+ 最初はぐー、じゃんけん:2
141
+ パー(COM)とパー(Player)で…
142
+ あいこだよ!
143
+ あいこで:1
144
+ グー(COM)とチョキ(Player)で…
145
+ あなたの負け
146
+
147
+ こんな感じになるそうです
148
+
85
149
 
86
150
  ここにより詳細な情報を記載してください。
87
151
 

2

書式の改善

2023/05/05 01:27

投稿

oas12
oas12

スコア1

test CHANGED
File without changes
test CHANGED
@@ -32,8 +32,6 @@
32
32
  ### 該当のソースコード
33
33
 
34
34
  ```java
35
- ソースコード
36
- ```
37
35
  import java.util.Scanner;
38
36
  import java.util.Random;
39
37
 
@@ -76,6 +74,8 @@
76
74
  }
77
75
  }
78
76
  }
77
+ ```
78
+
79
79
  ### 試したこと
80
80
  ランダムを他のクラスからの返しにしたり、go.while,if文を移動させる
81
81
 
@@ -85,3 +85,4 @@
85
85
 
86
86
  ここにより詳細な情報を記載してください。
87
87
 
88
+

1

試したことやコードの記入

2023/05/05 01:15

投稿

oas12
oas12

スコア1

test CHANGED
File without changes
test CHANGED
@@ -28,13 +28,56 @@
28
28
  エラーメッセージ
29
29
  ```
30
30
 
31
+
31
32
  ### 該当のソースコード
32
33
 
33
- ```ここに言語名を入力
34
+ ```java
34
35
  ソースコード
35
36
  ```
37
+ import java.util.Scanner;
38
+ import java.util.Random;
36
39
 
40
+ class Game {
41
+ public static void main(String[] args) {
42
+ System.out.println("じゃんけん勝負");
43
+ System.out.println("グーチョキパーを数字で入力してね");
44
+ System.out.println("0:グー");
45
+ System.out.println("1:チョキ");
46
+ System.out.println("2:パー");
47
+ String[] hands = { "グー", "チョキ", "パー" };
48
+
49
+ System.out.println("あいこで");
50
+ Random rand = new Random();
51
+ int com = rand.nextInt(3);
52
+ Scanner scan = new Scanner(System.in);
53
+ int myhand = scan.nextInt();
54
+
55
+ boolean isFirst = true;
56
+
57
+ while (true) {
58
+ System.out.print("最初はグー、じゃんけん:");
59
+ if (hands[com] == hands[myhand]) {
60
+ isFirst = false;
61
+ System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
62
+ System.out.println("あいこだよ");
63
+ System.out.print("あいこで:")
64
+ while(isFirst){
65
+ } if ((com == 0 && myhand == 1) || (com == 1 && myhand == 2) || (com == 2 && myhand == 0)) {
66
+ System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
67
+ System.out.println("あなたの負け");
68
+ break;
69
+ } else if ((com == 1 && myhand == 0) || (com == 2 && myhand == 1) || (com == 0 && myhand == 2)) {
70
+ System.out.println(hands[com] + "(COM)" + "と" + hands[myhand] + "(Player)で...");
71
+ System.out.println("あなたの勝ち");
72
+ break;
73
+ }
74
+
75
+ }
76
+ }
77
+ }
78
+ }
37
79
  ### 試したこと
80
+ ランダムを他のクラスからの返しにしたり、go.while,if文を移動させる
38
81
 
39
82
  ここに問題に対して試したことを記載してください。
40
83