質問編集履歴

3

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

2019/11/10 15:42

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -246,253 +246,213 @@
246
246
 
247
247
 
248
248
 
249
- ### 2019/11/10 23:45追記
249
+ ###2019/11/11 0:38追記
250
-
250
+
251
- 「if文メゾッの中に入っていないのでは」とい内容アドバイスを頂いたため
251
+ 先程、解答欄にてgentaro様インデンを修正したソースコードを投稿しくださましたので(gentaro様、ありがうござます!)こちら側で実行してみたのですがやはりエラーの嵐が収まる気配がありません…
252
-
253
- 最初の`int count = 1;//砲撃回数カウント用の変数を作成`と
252
+
254
-
255
- 最後`if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈きず失敗した)場合の処理`を
253
+ コードは「潜水艦ゲーム作成しなさい」という名目の学校の課題書いたものなので、出題した先生アドバイスを頂くことにまし。結果は早急にこちらに投稿致します。
256
-
257
- `public static void main(String[] args) throws IOException {`メゾッドの中に入れてみました。
254
+
258
-
259
- しかし、相変わらずエラーが発生するという状況となってしまっております。
260
-
261
- 解釈や修正内容ズレるといっ可能性も高いですが、アドバイスを頂けたらと思います
255
+ それまでに何かお気づきございましたらこちらに投稿し頂けるとありがたいです。
256
+
257
+
258
+
262
-
259
+ 稚拙な質問文・ソースコードではございましたが、それらから問題の原因の特定を行ってくれた皆様に深く感謝申し上げます。
263
-
264
-
260
+
261
+
262
+
265
- エラー内容
263
+ コンパイル実行時のエラー
266
-
267
-
268
-
264
+
269
- ```
265
+ ```
266
+
270
-
267
+ BattleShip.java:56: エラー: 型の開始が不正です
268
+
269
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
270
+
271
+ ^
272
+
273
+ BattleShip.java:56: エラー: <identifier>がありません
274
+
275
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
276
+
277
+ ^
278
+
279
+ BattleShip.java:56: エラー: ';'がありません
280
+
281
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
282
+
283
+ ^
284
+
285
+ BattleShip.java:56: エラー: 型の開始が不正です
286
+
287
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
288
+
289
+ ^
290
+
291
+ BattleShip.java:56: エラー: <identifier>がありません
292
+
293
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
294
+
295
+ ^
296
+
297
+ BattleShip.java:56: エラー: ';'がありません
298
+
299
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
300
+
301
+ ^
302
+
271
- BattleShip.java:7: エラー: シンボルを見つけられません
303
+ BattleShip.java:57: エラー: 型の開始が不正です
304
+
305
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
306
+
307
+ ^
308
+
309
+ BattleShip.java:57: エラー: ';'がありません
310
+
311
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
312
+
313
+ ^
314
+
315
+ BattleShip.java:57: エラー: 無効なメソッド宣言です。戻り値の型が必要です。
316
+
317
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
318
+
319
+ ^
320
+
321
+ BattleShip.java:57: エラー: 型の開始が不正です
322
+
323
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
324
+
325
+ ^
326
+
327
+ BattleShip.java:59: エラー: class、interfaceまたはenumがありません
328
+
329
+ }
330
+
331
+ ^
332
+
333
+ エラー11個
334
+
335
+ ```
336
+
337
+ ソースコード全体
338
+
339
+ ```
340
+
341
+ public class BattleShip {
342
+
343
+ //潜水艦の座標を乱数で0-9の範囲で生成
344
+
345
+ int sx = (int)(Math.random() * 10);
346
+
347
+ int sy = (int)(Math.random() * 10);
348
+
349
+
272
350
 
273
351
  public static void main(String[] args) throws IOException {
274
352
 
275
- ^
276
-
277
- シンボル: クラス IOException
278
-
279
- 場所: クラス BattleShip
280
-
281
- BattleShip.java:9: エラー: シンボルを見つけられません
282
-
283
353
  BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
284
354
 
285
- ^
286
-
287
- シンボル: クラス BufferedReader
288
-
289
- 場所: クラス BattleShip
290
-
291
- BattleShip.java:9: エラー: シンボルを見つけられません
292
-
293
- BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
294
-
295
- ^
296
-
297
- シンボル: クラス BufferedReader
298
-
299
- 場所: クラス BattleShip
300
-
301
- BattleShip.java:9: エラ: シンボル見つけられません
302
-
303
- BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
304
-
305
- ^
306
-
307
- シンボル: クラス InputStreamReader
308
-
309
- 場所: クラス BattleShip
310
-
311
- BattleShip.java:15: エラー: 二項演算子'<='のオペランド型が不正です
312
-
313
- while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
314
-
315
- ^
316
-
317
- 最初の型: boolean
318
-
319
- 2番目の型: int
320
-
321
- BattleShip.java:18: エラー: 変数 hxはすでにメソッド main(String[])で定義されています
322
-
323
- int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
324
-
325
- ^
326
-
327
- BattleShip.java:23: エラー: 二項演算子'<='のオペランド型が不正です
328
-
329
- while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
330
-
331
- ^
332
-
333
- 最初の型: boolean
334
-
335
- 2番目の型: int
336
-
337
- BattleShip.java:26: エラー: 変数 hyはすでにメソッド main(String[])で定義されています
338
-
339
- int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標入力
340
-
341
- ^
342
-
343
- BattleShip.java:31: エラー: staticでない変数 sxをstaticコンテキストから参照することできせん
344
-
345
- if (sx == hx && sy == hy) {//命中判定
346
-
347
- ^
348
-
349
- BattleShip.java:31: エラー: staticでない変数 syをstaticコンテキストから参照するこはできません
350
-
351
- if (sx == hx && sy == hy) {//命中判定
352
-
353
- ^
354
-
355
- BattleShip.java:40: エラー: staticでない変数 sxをstaticコンテキストから参照することはできません
356
-
357
- int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
358
-
359
- ^
360
-
361
- BattleShip.java:41: エラー: staticでない変数 syをstaticコンテキストから参照することはできません
362
-
363
- int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
364
-
365
- ^
366
-
367
- エラー12個
368
-
369
-
370
-
371
- ```
372
-
373
- 修正後の全ソースコード
374
-
375
- ```lang-Java
376
-
377
- public class BattleShip {
378
-
379
- //潜水艦の座標を乱数で0-9の範囲で生成
380
-
381
- int sx = (int)(Math.random()*10);
382
-
383
- int sy = (int)(Math.random()*10);
384
-
385
-
386
-
387
-
388
-
389
- public static void main(String[] args) throws IOException {
390
-
391
- int count = 1;//砲撃回数カウント用の変数を作成
392
-
393
- BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
394
-
395
-
396
-
397
- while (count <= 10) {//攻撃回数が10回を越えていない場合は繰り返す
398
-
399
- //数値の入力
400
-
401
- System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
402
-
403
- int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
404
-
405
- while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
406
-
407
- System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
408
-
409
- System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
410
-
411
- int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
412
-
413
- }
414
-
415
-
416
-
417
- System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
418
-
419
- int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
420
-
421
- while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
422
-
423
- System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
424
-
425
- System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
426
-
427
- int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
428
-
429
- }
430
-
431
- //数値入力終了、ゲーム開始
432
-
433
- System.out.println("砲撃回数" + count);//砲撃回数の表示
434
-
435
-
436
-
437
- if (sx == hx && sy == hy) {//命中判定
438
-
439
- //(※砲撃が命中した場合の処理)
440
-
441
- System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!");//命中座標の通知
442
-
443
- System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】");//勝利メッセージ
444
-
445
- System.out.println();//表示を整えるために改行
446
-
447
- count = 0;//ループ脱出のためにカウント変数を0に設定
448
-
449
- } else {//(※砲撃が外れた場合の処理)
450
-
451
- System.out.println("砲撃(" + hx + "," + hy + ")は外れました...");//命中座標の通知
452
-
453
- //ここからマンハッタン距離の算出
454
-
455
- int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
456
-
457
- int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
458
-
459
- if (xm < 0) {//潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
460
-
461
- xm = -xm;
462
-
463
- }
464
-
465
- if (ym < 0) {//潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
466
-
467
- ym = -ym;
468
-
469
- }
470
-
471
- int man = xm + ym;//x座標、y座標それぞれの誤差の合計の算出
472
-
473
- //マンハッタン距離の算出終了
474
-
475
- System.out.println("相手潜水艦との誤差は" + man);//砲撃
476
-
477
- count++;//カウント演算子を1増加
478
-
479
- System.out.println();//表示を整えるために改行
480
-
481
- }
482
-
483
- }
484
-
485
- if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
486
-
487
- System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】");//敗北メッセージ
488
-
489
- }
490
-
491
- }
492
-
493
-
494
-
495
-
355
+ int count = 1; //砲撃回数カウント用の変数を作成
356
+
357
+
358
+
359
+ while (count <= 10) { //攻撃回数が10回を越えていない場合は繰り返す
360
+
361
+ //数値の入力
362
+
363
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
364
+
365
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
366
+
367
+ while (!(0 <= hx <= 9)) { //0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
368
+
369
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
370
+
371
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユザに入力促す
372
+
373
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
374
+
375
+ }
376
+
377
+
378
+
379
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
380
+
381
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
382
+
383
+ while (!(0 <= hy <= 9)) { //0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
384
+
385
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
386
+
387
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
388
+
389
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
390
+
391
+ }
392
+
393
+ //数値入力終了、ゲーム開始
394
+
395
+ System.out.println("砲撃回数" + count); //砲撃回数の表示
396
+
397
+
398
+
399
+ if (sx == hx && sy == hy) { //命中判定
400
+
401
+ //(※砲撃が命中した場合の処理)
402
+
403
+ System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!"); //命中座標の通知
404
+
405
+ System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】"); //勝利メッセージ
406
+
407
+ System.out.println(); //表示を整えるために改行
408
+
409
+ count = 0; //ループ脱出のためにカウント変数0に設定
410
+
411
+ } else { //(※砲撃が外れた場合の処理)
412
+
413
+ System.out.println("砲撃(" + hx + "," + hy + ")外れした..."); //命中座標の通知
414
+
415
+ //ここからマンハッタン距離の算出
416
+
417
+ int xm = sx - hx; //潜水艦x座標と着弾x座標の誤差の算出
418
+
419
+ int ym = sy - hy; //潜水艦y座標着弾y座標の誤差の算出
420
+
421
+ if (xm < 0) { //潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
422
+
423
+ xm = -xm;
424
+
425
+ }
426
+
427
+ if (ym < 0) { //潜水艦y座標と着弾y座標の誤差が負値になった場合の修正処理
428
+
429
+ ym = -ym;
430
+
431
+ }
432
+
433
+ int man = xm + ym; //x座標y座標それぞれの誤差の合計の算出
434
+
435
+ //マンハッタン距離の算出終了
436
+
437
+ System.out.println("相手潜水艦との誤差は" + man); //砲撃
438
+
439
+ count++; //カウント演算子を1増加
440
+
441
+ System.out.println(); //表示を整えるために改行
442
+
443
+ }
444
+
445
+ }
446
+
447
+ }
448
+
449
+
450
+
451
+ if (count > 10) { //カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
452
+
453
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】"); //敗北メッセージ
454
+
455
+ }
496
456
 
497
457
  }
498
458
 

2

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

2019/11/10 15:42

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -243,3 +243,257 @@
243
243
 
244
244
 
245
245
  CentOS Linux release 7.5.1804 (Core)
246
+
247
+
248
+
249
+ ### 2019/11/10 23:45追記
250
+
251
+ 「if文がメゾットの中に入っていないのでは」といった内容のアドバイスを頂いたため、
252
+
253
+ 最初の`int count = 1;//砲撃回数カウント用の変数を作成`と
254
+
255
+ 最後の`if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理`を
256
+
257
+ `public static void main(String[] args) throws IOException {`メゾッドの中に入れてみました。
258
+
259
+ しかし、相変わらずエラーが発生するという状況となってしまっております。
260
+
261
+ 解釈や修正の内容がズレているといった可能性も高いですが、アドバイスを頂けたらと思います。
262
+
263
+
264
+
265
+ エラー内容
266
+
267
+
268
+
269
+ ```
270
+
271
+ BattleShip.java:7: エラー: シンボルを見つけられません
272
+
273
+ public static void main(String[] args) throws IOException {
274
+
275
+ ^
276
+
277
+ シンボル: クラス IOException
278
+
279
+ 場所: クラス BattleShip
280
+
281
+ BattleShip.java:9: エラー: シンボルを見つけられません
282
+
283
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
284
+
285
+ ^
286
+
287
+ シンボル: クラス BufferedReader
288
+
289
+ 場所: クラス BattleShip
290
+
291
+ BattleShip.java:9: エラー: シンボルを見つけられません
292
+
293
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
294
+
295
+ ^
296
+
297
+ シンボル: クラス BufferedReader
298
+
299
+ 場所: クラス BattleShip
300
+
301
+ BattleShip.java:9: エラー: シンボルを見つけられません
302
+
303
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
304
+
305
+ ^
306
+
307
+ シンボル: クラス InputStreamReader
308
+
309
+ 場所: クラス BattleShip
310
+
311
+ BattleShip.java:15: エラー: 二項演算子'<='のオペランド型が不正です
312
+
313
+ while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
314
+
315
+ ^
316
+
317
+ 最初の型: boolean
318
+
319
+ 2番目の型: int
320
+
321
+ BattleShip.java:18: エラー: 変数 hxはすでにメソッド main(String[])で定義されています
322
+
323
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
324
+
325
+ ^
326
+
327
+ BattleShip.java:23: エラー: 二項演算子'<='のオペランド型が不正です
328
+
329
+ while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
330
+
331
+ ^
332
+
333
+ 最初の型: boolean
334
+
335
+ 2番目の型: int
336
+
337
+ BattleShip.java:26: エラー: 変数 hyはすでにメソッド main(String[])で定義されています
338
+
339
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
340
+
341
+ ^
342
+
343
+ BattleShip.java:31: エラー: staticでない変数 sxをstaticコンテキストから参照することはできません
344
+
345
+ if (sx == hx && sy == hy) {//命中判定
346
+
347
+ ^
348
+
349
+ BattleShip.java:31: エラー: staticでない変数 syをstaticコンテキストから参照することはできません
350
+
351
+ if (sx == hx && sy == hy) {//命中判定
352
+
353
+ ^
354
+
355
+ BattleShip.java:40: エラー: staticでない変数 sxをstaticコンテキストから参照することはできません
356
+
357
+ int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
358
+
359
+ ^
360
+
361
+ BattleShip.java:41: エラー: staticでない変数 syをstaticコンテキストから参照することはできません
362
+
363
+ int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
364
+
365
+ ^
366
+
367
+ エラー12個
368
+
369
+
370
+
371
+ ```
372
+
373
+ 修正後の全ソースコード
374
+
375
+ ```lang-Java
376
+
377
+ public class BattleShip {
378
+
379
+ //潜水艦の座標を乱数で0-9の範囲で生成
380
+
381
+ int sx = (int)(Math.random()*10);
382
+
383
+ int sy = (int)(Math.random()*10);
384
+
385
+
386
+
387
+
388
+
389
+ public static void main(String[] args) throws IOException {
390
+
391
+ int count = 1;//砲撃回数カウント用の変数を作成
392
+
393
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
394
+
395
+
396
+
397
+ while (count <= 10) {//攻撃回数が10回を越えていない場合は繰り返す
398
+
399
+ //数値の入力
400
+
401
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
402
+
403
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
404
+
405
+ while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
406
+
407
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
408
+
409
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
410
+
411
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
412
+
413
+ }
414
+
415
+
416
+
417
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
418
+
419
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
420
+
421
+ while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
422
+
423
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
424
+
425
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
426
+
427
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
428
+
429
+ }
430
+
431
+ //数値入力終了、ゲーム開始
432
+
433
+ System.out.println("砲撃回数" + count);//砲撃回数の表示
434
+
435
+
436
+
437
+ if (sx == hx && sy == hy) {//命中判定
438
+
439
+ //(※砲撃が命中した場合の処理)
440
+
441
+ System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!");//命中座標の通知
442
+
443
+ System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】");//勝利メッセージ
444
+
445
+ System.out.println();//表示を整えるために改行
446
+
447
+ count = 0;//ループ脱出のためにカウント変数を0に設定
448
+
449
+ } else {//(※砲撃が外れた場合の処理)
450
+
451
+ System.out.println("砲撃(" + hx + "," + hy + ")は外れました...");//命中座標の通知
452
+
453
+ //ここからマンハッタン距離の算出
454
+
455
+ int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
456
+
457
+ int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
458
+
459
+ if (xm < 0) {//潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
460
+
461
+ xm = -xm;
462
+
463
+ }
464
+
465
+ if (ym < 0) {//潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
466
+
467
+ ym = -ym;
468
+
469
+ }
470
+
471
+ int man = xm + ym;//x座標、y座標それぞれの誤差の合計の算出
472
+
473
+ //マンハッタン距離の算出終了
474
+
475
+ System.out.println("相手潜水艦との誤差は" + man);//砲撃
476
+
477
+ count++;//カウント演算子を1増加
478
+
479
+ System.out.println();//表示を整えるために改行
480
+
481
+ }
482
+
483
+ }
484
+
485
+ if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
486
+
487
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】");//敗北メッセージ
488
+
489
+ }
490
+
491
+ }
492
+
493
+
494
+
495
+
496
+
497
+ }
498
+
499
+ ```

1

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

2019/11/10 15:03

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- javascriptのコンパイル時に大量のエラーが発生しました
1
+ Javaのコンパイル時に大量のエラーが発生しました
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- こんばんは。プログラミング/java初心者です。
3
+ こんばんは。プログラミング/Java初心者です。
4
4
 
5
5
 
6
6
 
@@ -112,6 +112,132 @@
112
112
 
113
113
  御回答よろしくお願い致します。
114
114
 
115
+
116
+
117
+ ###全ソースコード
118
+
119
+ ```lang-Java
120
+
121
+ public class BattleShip {
122
+
123
+ //潜水艦の座標を乱数で0-9の範囲で生成
124
+
125
+ int sx = (int)(Math.random()*10);
126
+
127
+ int sy = (int)(Math.random()*10);
128
+
129
+
130
+
131
+ public static void main(String[] args) throws IOException {
132
+
133
+ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
134
+
135
+ int count = 1;//砲撃回数カウント用の変数を作成
136
+
137
+
138
+
139
+ while (count <= 10) {//攻撃回数が10回を越えていない場合は繰り返す
140
+
141
+ //数値の入力
142
+
143
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
144
+
145
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
146
+
147
+ while (!(0 <= hx <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
148
+
149
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
150
+
151
+ System.out.println("砲撃のx座標を入力してください。(0-9)"); //ユーザに入力を促す
152
+
153
+ int hx = Integer.parseInt(buf.readLine()); //標準入力からx座標を入力
154
+
155
+ }
156
+
157
+
158
+
159
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
160
+
161
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
162
+
163
+ while (!(0 <= hy <= 9)) {//0-9以外の値が入力された場合、正しい数が入力されるまで警告を表示して繰り返す
164
+
165
+ System.out.println("!エラー:0から9までの整数を入力してください!"); //ユーザに入力を促す
166
+
167
+ System.out.println("砲撃のy座標を入力してください。(0-9)"); //ユーザに入力を促す
168
+
169
+ int hy = Integer.parseInt(buf.readLine()); //標準入力からy座標を入力
170
+
171
+ }
172
+
173
+ //数値入力終了、ゲーム開始
174
+
175
+ System.out.println("砲撃回数" + count);//砲撃回数の表示
176
+
177
+
178
+
179
+ if (sx == hx && sy == hy) {//命中判定
180
+
181
+ //(※砲撃が命中した場合の処理)
182
+
183
+ System.out.println("砲撃(" + hx + "," + hy + ")は命中しました!");//命中座標の通知
184
+
185
+ System.out.println("相手の潜水艦を撃沈しました。 【YOU WIN!】");//勝利メッセージ
186
+
187
+ System.out.println();//表示を整えるために改行
188
+
189
+ count = 0;//ループ脱出のためにカウント変数を0に設定
190
+
191
+ } else {//(※砲撃が外れた場合の処理)
192
+
193
+ System.out.println("砲撃(" + hx + "," + hy + ")は外れました...");//命中座標の通知
194
+
195
+ //ここからマンハッタン距離の算出
196
+
197
+ int xm = sx - hx;//潜水艦x座標と着弾x座標の誤差の算出
198
+
199
+ int ym = sy - hy;//潜水艦y座標と着弾y座標の誤差の算出
200
+
201
+ if (xm < 0) {//潜水艦x座標と着弾x座標の誤差が負の値になった場合の修正処理
202
+
203
+ xm = -xm;
204
+
205
+ }
206
+
207
+ if (ym < 0) {//潜水艦y座標と着弾y座標の誤差が負の値になった場合の修正処理
208
+
209
+ ym = -ym;
210
+
211
+ }
212
+
213
+ int man = xm + ym;//x座標、y座標それぞれの誤差の合計の算出
214
+
215
+ //マンハッタン距離の算出終了
216
+
217
+ System.out.println("相手潜水艦との誤差は" + man);//砲撃
218
+
219
+ count++;//カウント演算子を1増加
220
+
221
+ System.out.println();//表示を整えるために改行
222
+
223
+ }
224
+
225
+ }
226
+
227
+ }
228
+
229
+
230
+
231
+ if (count > 10) {//カウント関数が10回を越えた(=10回以内に潜水艦を撃沈できずに失敗した)場合の処理
232
+
233
+ System.out.println("相手の潜水艦の撃沈に失敗しました。【GAME OVER!】");//敗北メッセージ
234
+
235
+ }
236
+
237
+ }
238
+
239
+ ```
240
+
115
241
  ### 補足情報(FW/ツールのバージョンなど)
116
242
 
117
243