ジャンケンクラス(メインクラス)、プレーヤークラス、審判クラスの三つを関連させてジャンケンを行う一つのシステムを作りましたが、うまく機能しません。それぞれのシステムは以下のようにコードしました。
【ジャンケンクラス】
Java
1class Ex2_02_1_Janken { 2 public static void main (String[] args) { 3 4 //シナリオ①:コマンドライン引数から3人の名前を受け取る。 5 String ppl1 = args[0] ; 6 String ppl2 = args[1] ; 7 String ppl3 = args[2] ; 8 9 //シナリオ②:2名のプレイヤーと審判を場に登場させる。 10 Ex2_02_1_Player player1 = new Ex2_02_1_Player( ppl1 ) ; 11 Ex2_02_1_Player player2 = new Ex2_02_1_Player( ppl2 ) ; 12 Ex2_02_1_Judgement judgement = new Ex2_02_1_Judgement( ppl3 ) ; 13 14 //シナリオ③:それぞれのプレイヤーにジャンケンの手をださせる。 15 System.out.println("「じゃんけん…ぽん!!!!!」") ; 16 17 player1.makeHandStatus() ; 18 player2.makeHandStatus() ; 19 20 System.out.println( "「" + player1.name + "さんの手は" + player1.handStatus + "でした」" ) ; 21 System.out.println( "「" + player2.name + "さんの手は" + player2.handStatus + "でした」" ) ; 22 23 //シナリオ④:勝敗の結果を表示する。 24 System.out.println( "「結果は…」" ) ; 25 26 judgement.judgementResult(player1, player2) ; 27 28 } 29}
【プレーヤークラス】
Java
1import java.util.Random; 2 3class Ex2_02_1_Player { 4 5 //---フィールド---------------------------------------------- 6 7 String name ; //プレイヤーの名前 8 String handStatus ; //ジャンケンの手 9 10 //---コンストラクタ------------------------------------------------ 11 12 Ex2_02_1_Player(String nm_ply){ 13 name = nm_ply ; 14 } 15 16 //---メソッド------------------------------------------------------ 17 18 //makeHandStatusメソッド 19 void makeHandStatus(){ 20 21 String[] hands = { "グー", "チョキ", "パー" } ; 22 23 Random r = new Random() ; 24 handStatus = hands[r.nextInt(3)] ; 25 26 } 27}
【審判クラス】
Java
1class Ex2_02_1_Judgement { 2 3 //---フィールド---------------------------------------------- 4 5 String name ; //審判の名前 6 7 //---コンストラクタ------------------------------------------------ 8 9 Ex2_02_1_Judgement(String nm_jug){ 10 name = nm_jug ; 11 } 12 13 //---メソッド------------------------------------------------------ 14 15 //Judgementソッド 16 void JudgementResult(Ex2_02_1_Player player1, Ex2_02_1_Player player2){ 17 18 if(player1.handStatus.equals(player2.handStatus)){ 19 20 System.out.println( "審判" + judgement.name + "「あいこ!勝負つかず!!!」" ) ; 21 22 }else if(((player1.handStatus.equals("グー"))&&(player2.handStatus.equals("チョキ")))||((player1.handStatus.equals("パー"))&&(player2.handStatus.equals("グー")))||((player1.handStatus.equals("チョキ"))&&(player2.handStatus.equals("パー")))){ 23 24 System.out.println( "審判" + judgement.name + "「" + player1.name + "さんの勝ち」" ) ; 25 26 }else if(((player2.handStatus.equals("グー"))&&(player1.handStatus.equals("チョキ")))||((player2.handStatus.equals("パー"))&&(player1.handStatus.equals("グー")))||((player2.handStatus.equals("チョキ"))&&(player1.handStatus.equals("パー")))){ 27 28 System.out.println( "審判" + judgement.name + "「" + player2.name + "さんの勝ち」" ) ; 29 30 } 31 32 } 33}
目的は以下のように表示されることです。
【表示例】
(コマンドライン引数でプレーヤーと審判の名前を受け取る)
「じゃんけん...ぽん!!!!!」
「Aさんの手はパーでした」
「Bさんの手はグーでした」
審判C「Aさんの勝ち」
本当はセリフ部分は全て審判が言っていることにしたいのですが、審判クラスをうまく作成するのに苦戦しているため、ひとまずif構文の中身だけ審判に担当してもらうことにしています。
先に添付したメインクラス(ジャンケンクラス)をコンパイルすると以下のようなエラーが出てきてしまいます。
【コンパイル時に出てくるエラー】
Ex2_02_1_Janken.java:26: error: cannot find symbol
judgement.judgementResult(player1, player2) ;
^
symbol: method judgementResult(Ex2_02_1_Player,Ex2_02_1_Player)
location: variable judgement of type Ex2_02_1_Judgement
.\Ex2_02_1_Judgement.java:20: error: cannot find symbol
System.out.println( "審判" + judgement.name + "「あいこ!勝負つかず!!!」" ) ;
^
symbol: variable judgement
location: class Ex2_02_1_Judgement
.\Ex2_02_1_Judgement.java:24: error: cannot find symbol
System.out.println( "審判" + judgement.name + "「" + player1.name + "さんの勝ち」" ) ;
^
symbol: variable judgement
location: class Ex2_02_1_Judgement
.\Ex2_02_1_Judgement.java:28: error: cannot find symbol
System.out.println( "審判" + judgement.name + "「" + player2.name + "さんの勝ち」" ) ;
^
symbol: variable judgement
location: class Ex2_02_1_Judgement
4 errors
なぜ"Cannot find symbol"になっているのか分かりません。
どのようにコードを書けばエラーを回避できますでしょうか。
回答1件
あなたの回答
tips
プレビュー