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

質問編集履歴

3

◎現時点での最終ソースコードとエラーメッセージ、挨拶文を追記 ◎文字数オーバーのため古い情報を削除

2019/11/10 15:42

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -122,129 +122,109 @@
122
122
 
123
123
  CentOS Linux release 7.5.1804 (Core)
124
124
 
125
- ### 2019/11/10 23:45追記
125
+ ###2019/11/11 0:38追記
126
- 「if文メゾッの中に入っていないのでは」とい内容アドバイスを頂いたため
126
+ 先程、解答欄にてgentaro様インデンを修正したソースコードを投稿しくださましたので(gentaro様、ありがうござます!)こちら側で実行してみたのですがやはりエラーの嵐が収まる気配がありません…
127
- 最初の`int count = 1;//砲撃回数カウント用の変数を作成`と
128
- 最後`if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合処理`
127
+ コードは「潜水艦ゲーム作成なさい」という名目の学校の課題で書いなので、出題した先生にアドバイス頂くことにしました。結果は早急にこちらに投稿致します。
129
- `public static void main(String[] args) throws IOException {`メゾッドの中に入れてみました。
130
- しかし、相変わらずエラーが発生するという状況となってしまっております。
131
- 解釈や修正内容ズレているといっ可能性も高いですが、アドバイスを頂けたらと思います
128
+ それまでに何かお気づきござましたらこちらに投稿して頂けるとありがたいです。
132
129
 
133
- エラ内容
130
+ 稚拙な質問文・ソスコードではございましたが、それらから問題の原因の特定を行ってくれた皆様に深く感謝申し上げます。
134
131
 
132
+ コンパイル実行時のエラー
135
133
  ```
136
- BattleShip.java:7: エラー: シンボルを見つけられません
134
+ BattleShip.java:56: エラー: 型の開始が不正です
137
- public static void main(String[] args) throws IOException {
135
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
138
- ^
136
+ ^
139
- シンボル: クラス IOException
140
- 場所: クラス BattleShip
141
- BattleShip.java:9: エラー: シンボルを見つけられません
137
+ BattleShip.java:56: エラー: <identifier>がありません
142
- BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力準備
138
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合処理
143
- ^
139
+ ^
144
- シンボル: クラス BufferedReader
145
- 場所: クラス BattleShip
146
- BattleShip.java:9: エラー: シンボルを見つけられません
140
+ BattleShip.java:56: エラー: ';'がありません
147
- BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力準備
141
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合処理
148
- ^
142
+ ^
149
- シンボル: クラス BufferedReader
150
- 場所: クラス BattleShip
151
- BattleShip.java:9: エラー: シンボルを見つけられません
143
+ BattleShip.java:56: エラー: 型の開始が不正です
152
- BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力準備
144
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合処理
153
- ^
145
+ ^
154
- シンボル: クラス InputStreamReader
155
- 場所: クラス BattleShip
156
- BattleShip.java:15: エラー: 二項演算子'<='のオペランド型不正です
146
+ BattleShip.java:56: エラー: <identifier>ありません
157
- while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告表示て繰り返す
147
+ if (count > 10) { //カウント関数が10回越えた(=10回以内に潜水艦を撃沈できずに失敗た)場合の処理
158
- ^
148
+ ^
159
- 最初の型: boolean
160
- 2番目の型: int
161
- BattleShip.java:18: エラー: 変数 hxはすでにメソッド main(String[])で定義されてい
149
+ BattleShip.java:56: エラー: ';'がありせん
162
- int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標入力
150
+ if (count > 10) { //カウント関数が10回越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
163
- ^
151
+ ^
164
- BattleShip.java:23: エラー: 二項演算子'<='のオペランド型が不正です
152
+ BattleShip.java:57: エラー: 型の開始が不正です
165
- while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
153
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
166
- ^
154
+ ^
167
- 最初の型: boolean
168
- 2番目の型: int
169
- BattleShip.java:26: エラー: 変数 hyはすでにメソッド main(String[])で定義されてい
155
+ BattleShip.java:57: エラー: ';'がありせん
170
- int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
156
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
171
- ^
157
+ ^
172
- BattleShip.java:31: エラー: staticでい変数 sxをstaticコンテキストから参照ることはきません
158
+ BattleShip.java:57: エラー: 無効メソッド宣言で。戻り値の型が必要す。
173
- if (sx == hx && sy == hy) {//命中判定
159
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
174
- ^
160
+ ^
175
- BattleShip.java:31: エラー: staticない変数 syをstaticコンテキストから参照ることはできません
161
+ BattleShip.java:57: エラー: 型の開始が不正です
176
- if (sx == hx && sy == hy) {//命中判定
162
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
177
- ^
163
+ ^
178
- BattleShip.java:40: エラー: staticでない変数 sxをstaticコンテキストから参照することできません
164
+ BattleShip.java:59: エラー: class、interfaceまたenumがありません
179
- int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
165
+ }
180
- ^
166
+ ^
181
- BattleShip.java:41: エラー: staticでない変数 syをstaticコンテキストから参照することはできません
182
- int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
183
- ^
184
- エラー12
167
+ エラー11
185
-
186
168
  ```
187
- 修正後の全ソースコード
169
+ ソースコード全体
188
- ```lang-Java
170
+ ```
189
171
  public class BattleShip {
190
172
  //潜水艦の座標を乱数で0-9の範囲で生成
191
- int sx = (int)(Math.random()*10);
173
+ int sx = (int)(Math.random() * 10);
192
- int sy = (int)(Math.random()*10);
174
+ int sy = (int)(Math.random() * 10);
193
175
 
194
-
195
176
  public static void main(String[] args) throws IOException {
196
- int count = 1;//砲撃回数カウント用の変数を作成
197
177
  BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
178
+ int count = 1; //砲撃回数カウント用の変数を作成
198
179
 
199
- while (count <= 10) {//攻撃回数が10回を越えていない場合は繰り返す
180
+ while (count <= 10) { //攻撃回数が10回を越えていない場合は繰り返す
200
- //数値の入力
181
+ //数値の入力
201
- System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
182
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
202
- int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
183
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
203
- while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
184
+ while (!(0 <= hx <= 9)) { //0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
204
- System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
185
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
205
- System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
186
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
206
- int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
187
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
207
- }
188
+ }
208
189
 
209
- System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
190
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
210
- int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
191
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
211
- while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
192
+ while (!(0 <= hy <= 9)) { //0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
212
- System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
193
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
213
- System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
194
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
214
- int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
195
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
215
- }
196
+ }
216
- //数値入力終了、ゲーム開始
197
+ //数値入力終了、ゲーム開始
217
- System.out.println("砲撃回数" + count);//砲撃回数の表示
198
+ System.out.println("砲撃回数" + count); //砲撃回数の表示
218
199
 
219
- if (sx == hx && sy == hy) {//命中判定
200
+ if (sx == hx && sy == hy) { //命中判定
220
- //(※砲撃が命中した場合の処理)
201
+ //(※砲撃が命中した場合の処理)
221
- System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!");//命中座標の通知
202
+ System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!"); //命中座標の通知
222
- System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】");//勝利メッセージ
203
+ System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】"); //勝利メッセージ
223
- System.out.println();//表示を整えるために改行
204
+ System.out.println(); //表示を整えるために改行
224
- count = 0;//ループ脱出のためにカウント変数を0に設定
205
+ count = 0; //ループ脱出のためにカウント変数を0に設定
225
- } else {//(※砲撃が外れた場合の処理)
206
+ } else { //(※砲撃が外れた場合の処理)
226
- System.out.println("砲撃(" + hx + "," + hy + ")は外れました...");//命中座標の通知
207
+ System.out.println("砲撃(" + hx + "," + hy + ")は外れました..."); //命中座標の通知
227
- //ここからマンハッタン距離の算出
208
+ //ここからマンハッタン距離の算出
228
- int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
209
+ int xm = sx - hx; //潜水艦x座標と着弾x座標の誤差の算出
229
- int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
210
+ int ym = sy - hy; //潜水艦y座標と着弾y座標の誤差の算出
230
- if (xm < 0) {//潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
211
+ if (xm < 0) { //潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
231
- xm = -xm;
212
+ xm = -xm;
232
- }
213
+ }
233
- if (ym < 0) {//潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
214
+ if (ym < 0) { //潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
234
- ym = -ym;
215
+ ym = -ym;
235
- }
216
+ }
236
- int man = xm + ym;//x座標、y座標それぞれの誤差の合計の算出
217
+ int man = xm + ym; //x座標、y座標それぞれの誤差の合計の算出
237
- //マンハッタン距離の算出終了
218
+ //マンハッタン距離の算出終了
238
- System.out.println("相手潜水艦との誤差は" + man);//砲撃
219
+ System.out.println("相手潜水艦との誤差は" + man); //砲撃
239
- count++;//カウント演算子を1増加
220
+ count++; //カウント演算子を1増加
240
- System.out.println();//表示を整えるために改行
221
+ System.out.println(); //表示を整えるために改行
241
- }
222
+ }
242
- }
223
+ }
243
- if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
244
- System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】");//敗北メッセージ
245
- }
224
+ }
246
- }
247
225
 
248
-
226
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
227
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
228
+ }
249
229
  }
250
230
  ```

2

修正後のエラーメッセージ・ソースコードの修正

2019/11/10 15:42

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -120,4 +120,131 @@
120
120
  ```
121
121
  ### 補足情報(FW/ツールのバージョンなど)
122
122
 
123
- CentOS Linux release 7.5.1804 (Core)
123
+ CentOS Linux release 7.5.1804 (Core)
124
+
125
+ ### 2019/11/10 23:45追記
126
+ 「if文がメゾットの中に入っていないのでは」といった内容のアドバイスを頂いたため、
127
+ 最初の`int count = 1;//砲撃回数カウント用の変数を作成`と
128
+ 最後の`if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理`を
129
+ `public static void main(String[] args) throws IOException {`メゾッドの中に入れてみました。
130
+ しかし、相変わらずエラーが発生するという状況となってしまっております。
131
+ 解釈や修正の内容がズレているといった可能性も高いですが、アドバイスを頂けたらと思います。
132
+
133
+ エラー内容
134
+
135
+ ```
136
+ BattleShip.java:7: エラー: シンボルを見つけられません
137
+ public static void main(String[] args) throws IOException {
138
+ ^
139
+ シンボル: クラス IOException
140
+ 場所: クラス BattleShip
141
+ BattleShip.java:9: エラー: シンボルを見つけられません
142
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
143
+ ^
144
+ シンボル: クラス BufferedReader
145
+ 場所: クラス BattleShip
146
+ BattleShip.java:9: エラー: シンボルを見つけられません
147
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
148
+ ^
149
+ シンボル: クラス BufferedReader
150
+ 場所: クラス BattleShip
151
+ BattleShip.java:9: エラー: シンボルを見つけられません
152
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
153
+ ^
154
+ シンボル: クラス InputStreamReader
155
+ 場所: クラス BattleShip
156
+ BattleShip.java:15: エラー: 二項演算子'<='のオペランド型が不正です
157
+ while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
158
+ ^
159
+ 最初の型: boolean
160
+ 2番目の型: int
161
+ BattleShip.java:18: エラー: 変数 hxはすでにメソッド main(String[])で定義されています
162
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
163
+ ^
164
+ BattleShip.java:23: エラー: 二項演算子'<='のオペランド型が不正です
165
+ while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
166
+ ^
167
+ 最初の型: boolean
168
+ 2番目の型: int
169
+ BattleShip.java:26: エラー: 変数 hyはすでにメソッド main(String[])で定義されています
170
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
171
+ ^
172
+ BattleShip.java:31: エラー: staticでない変数 sxをstaticコンテキストから参照することはできません
173
+ if (sx == hx && sy == hy) {//命中判定
174
+ ^
175
+ BattleShip.java:31: エラー: staticでない変数 syをstaticコンテキストから参照することはできません
176
+ if (sx == hx && sy == hy) {//命中判定
177
+ ^
178
+ BattleShip.java:40: エラー: staticでない変数 sxをstaticコンテキストから参照することはできません
179
+ int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
180
+ ^
181
+ BattleShip.java:41: エラー: staticでない変数 syをstaticコンテキストから参照することはできません
182
+ int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
183
+ ^
184
+ エラー12個
185
+
186
+ ```
187
+ 修正後の全ソースコード
188
+ ```lang-Java
189
+ public class BattleShip {
190
+ //潜水艦の座標を乱数で0-9の範囲で生成
191
+ int sx = (int)(Math.random()*10);
192
+ int sy = (int)(Math.random()*10);
193
+
194
+
195
+ public static void main(String[] args) throws IOException {
196
+ int count = 1;//砲撃回数カウント用の変数を作成
197
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
198
+
199
+ while (count <= 10) {//攻撃回数が10回を越えていない場合は繰り返す
200
+ //数値の入力
201
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
202
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
203
+ while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
204
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
205
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
206
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
207
+ }
208
+
209
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
210
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
211
+ while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
212
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
213
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
214
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
215
+ }
216
+ //数値入力終了、ゲーム開始
217
+ System.out.println("砲撃回数" + count);//砲撃回数の表示
218
+
219
+ if (sx == hx && sy == hy) {//命中判定
220
+ //(※砲撃が命中した場合の処理)
221
+ System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!");//命中座標の通知
222
+ System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】");//勝利メッセージ
223
+ System.out.println();//表示を整えるために改行
224
+ count = 0;//ループ脱出のためにカウント変数を0に設定
225
+ } else {//(※砲撃が外れた場合の処理)
226
+ System.out.println("砲撃(" + hx + "," + hy + ")は外れました...");//命中座標の通知
227
+ //ここからマンハッタン距離の算出
228
+ int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
229
+ int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
230
+ if (xm < 0) {//潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
231
+ xm = -xm;
232
+ }
233
+ if (ym < 0) {//潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
234
+ ym = -ym;
235
+ }
236
+ int man = xm + ym;//x座標、y座標それぞれの誤差の合計の算出
237
+ //マンハッタン距離の算出終了
238
+ System.out.println("相手潜水艦との誤差は" + man);//砲撃
239
+ count++;//カウント演算子を1増加
240
+ System.out.println();//表示を整えるために改行
241
+ }
242
+ }
243
+ if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
244
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】");//敗北メッセージ
245
+ }
246
+ }
247
+
248
+
249
+ }
250
+ ```

1

タイトルの「javascript」を「java」に修正、全ソースコードの掲載

2019/11/10 15:03

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- javascriptのコンパイル時に大量のエラーが発生しました
1
+ Javaのコンパイル時に大量のエラーが発生しました
body CHANGED
@@ -1,5 +1,5 @@
1
1
  ### 前提・実現したいこと
2
- こんばんは。プログラミング/java初心者です。
2
+ こんばんは。プログラミング/Java初心者です。
3
3
 
4
4
 
5
5
  Javaのソースコードを`javac`でコンパイルしようとしたところ、下記のようなエラーが発生してしまいました。
@@ -55,6 +55,69 @@
55
55
  また、その他のエラーの詳細をネット上で調べてみたのですが、結局エラーの意味や原因を理解することができなかったので、噛み砕いて説明していただけると嬉しいです。
56
56
 
57
57
  御回答よろしくお願い致します。
58
+
59
+ ###全ソースコード
60
+ ```lang-Java
61
+ public class BattleShip {
62
+ //潜水艦の座標を乱数で0-9の範囲で生成
63
+ int sx = (int)(Math.random()*10);
64
+ int sy = (int)(Math.random()*10);
65
+
66
+ public static void main(String[] args) throws IOException {
67
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
68
+ int count = 1;//砲撃回数カウント用の変数を作成
69
+
70
+ while (count <= 10) {//攻撃回数が10回を越えていない場合は繰り返す
71
+ //数値の入力
72
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
73
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
74
+ while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
75
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
76
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
77
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
78
+ }
79
+
80
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
81
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
82
+ while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
83
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
84
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
85
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
86
+ }
87
+ //数値入力終了、ゲーム開始
88
+ System.out.println("砲撃回数" + count);//砲撃回数の表示
89
+
90
+ if (sx == hx && sy == hy) {//命中判定
91
+ //(※砲撃が命中した場合の処理)
92
+ System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!");//命中座標の通知
93
+ System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】");//勝利メッセージ
94
+ System.out.println();//表示を整えるために改行
95
+ count = 0;//ループ脱出のためにカウント変数を0に設定
96
+ } else {//(※砲撃が外れた場合の処理)
97
+ System.out.println("砲撃(" + hx + "," + hy + ")は外れました...");//命中座標の通知
98
+ //ここからマンハッタン距離の算出
99
+ int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
100
+ int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
101
+ if (xm < 0) {//潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
102
+ xm = -xm;
103
+ }
104
+ if (ym < 0) {//潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
105
+ ym = -ym;
106
+ }
107
+ int man = xm + ym;//x座標、y座標それぞれの誤差の合計の算出
108
+ //マンハッタン距離の算出終了
109
+ System.out.println("相手潜水艦との誤差は" + man);//砲撃
110
+ count++;//カウント演算子を1増加
111
+ System.out.println();//表示を整えるために改行
112
+ }
113
+ }
114
+ }
115
+
116
+ if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
117
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】");//敗北メッセージ
118
+ }
119
+ }
120
+ ```
58
121
  ### 補足情報(FW/ツールのバージョンなど)
59
122
 
60
123
  CentOS Linux release 7.5.1804 (Core)