前提・実現したいこと
はじめまして。java初心者のものです。初歩的な質問かもしれないのですがお答えいただけたら幸いです。
javaを用いてじゃんけんゲームを作成しているのですが、あいこの際にじゃんけんの入力を繰り返しを行えるよう改良したいと考えています。もしよければどなたかご教授いただけませんか。ほかに必要な記載があれば教えてくださるとありがたいです。よろしくお願いします。
該当のソースコード
Java
1import java.util.Random; 2import java.util.Scanner; 3 4public class JankenIf { 5 6 public static void main(String[] args) { 7 while(true) { 8 // ユーザの手をキーボードから入力してもらう 9 int user = getUser(); 10 11 // コンピュータの手を乱数で作成 12 int cpu = getCpu(); 13 14 // 勝敗の判定 15 String result = judgeJanken(user,cpu); 16 17 // 結果を表示 18 showResult(user,cpu,result); 19 } 20 21 public static int getUser() { 22 // キーボード入力の準備 23 Scanner stdin = new Scanner(System.in); 24 25 // 無限ループ 26 while(true) { 27 // メッセージの表示 28 System.out.println("<じゃんけんゲーム>"); 29 System.out.println(); 30 System.out.println("あなたのじゃんけんの手を矢印の先に入力して下さい!"); 31 System.out.print("(グーの場合:0,チョキの場合:1、パーの場合:2) --> "); 32 33 // 入力されたデータが整数かどうかチェック 34 if(stdin.hasNextInt()) { 35 // 入力されたデータを整数として読み込む 36 int number = stdin.nextInt(); 37 // 整数でも有効なのは「0,1,2」のみ 38 if(number<=-1 || number >=3) { 39 // 範囲外は無効なデータなのでやり直し 40 System.out.println("【エラー】入力できるのは「0~2」です"); 41 continue; 42 }else { 43 // 0,1,2の場合、メソッドの結果として返す 44 return number; 45 } 46 }else { 47 // 整数以外の場合、無効なデータなのでやり直し 48 System.out.println("【エラー】入力できるのは整数だけです"); 49 // 不要なトークンをバッファから取り除く 50 stdin.next(); 51 } 52 } 53 } 54 55 public static int getCpu() { 56 // 乱数を準備 57 Random rand = new Random(); 58 // 0,1,2のどれかを求め、メソッドの結果として返す 59 return rand.nextInt(3); 60 } 61 62 public static String judgeJanken(int user,int cpu) { 63 String result=""; // 判定結果を保存 64 65 if((user==0 && cpu==1) || (user==1 && cpu==2) || (user==2 && cpu==0)) { 66 result="あなたの勝ち!"; 67 }else if( (user==0 && cpu==2) || (user==1 && cpu==0) || (user==2 && cpu==1)) { 68 result="あなたのまけ!"; 69 }else { 70 result="あいこです!"; 71 } 72 73 // 勝敗結果を返す 74 return result; 75 } 76 77 public static void showResult(int user,int cpu,String result) { 78 // じゃんけんの手を配列で定義 79 String[] janken= {"グー","チョキ","パー"}; 80 // 結果の表示 81 System.out.println("あなたの手:"+janken[user]+",コンピュータの手:"+janken[cpu]); 82 System.out.println("結果は..."+result); 83 if((user==0 && cpu==1)||(user==1 && cpu==2)||(user==2 && cpu==0)||(user==0 && cpu==2)||(user==1 && cpu==0)||(user==2 && cpu==1)) { 84 break; 85 } 86 } 87 } 88 } 89}
試したこと
while文を用いて試してみたのですが知識不足でうまく作用されませんでした。
while文ですべてくくり、じゃんけんの勝ちと負けの際にbreakで抜けられるようにするようコードを書いたつもりです。
現状
・Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at JankenIf.main(JankenIf.java:6)
という表示が出るため実行に移せない。
・実行できないため、あいこの際に繰り返しが適切にされるかわからない。
理想
・じゃんけんの勝敗がつくまで繰り返しじゃんけんを行うコードを作る。
回答1件
あなたの回答
tips
プレビュー