前提・実現したいこと
javaの勉強中です。以下のようにじゃんけんプログラムを作成したのですが、オブジェクト指向に基づき、3つのメソッド(main含む)に分けて作成し直せという課題が出ました。
どこをどのように分けて作れば良いのか、何を基準に分ければいいのか教えていただけると幸いです。
じゃんけんプログラムの条件はAさんとBさんがじゃんけん、それを10回繰り返し、「n回目 Aさんグー Bさんパー 勝者:Bさん」のように表示させる、ただしAさんが三回連続で負けた場合そこでプログラムを終了する、という条件です。
また、このようなプログラムの場合ループ回数が二桁になるとき、1〜9のから10になったとき表示が桁数分ずれることが気になるのですが、なにか解決法はあるのでしょうか?
該当のソースコード
java
1import java.util.Random; 2 3public class Janken { 4 5 public static void main(String[] args) { 6 7 //文字列型の配列hand[]に、"グー ","チョキ","パー "を代入 8 String hand[] = {"グー ","チョキ","パー "}; 9 10 //文字列型の変数judgeに、nullを代入 11 String judge = null; 12 13 //整数型の変数losecountに、0を代入 14 int losecount = 0; 15 16 17 Random rd = new Random(); 18 //整数型の変数iに1を代入し、iが10より大きいか同じになるまで、iを1増やして、繰り返す 19 for(int i =1 ; i <= 10 ; i++) { 20 21 //整数型の変数xに、RandomクラスのnextInt()メソッドで取得した3未満の整数型の数字を代入 22 int x = rd.nextInt(3); 23 24 //整数型の変数yに、RandomクラスのnextInt()メソッドで取得した3未満の整数型の数字を代入 25 int y = rd.nextInt(3); 26 27 //x-y+3を3で割った余りが2の場合、処理をする 28 if((x - y + 3) % 3 == 2){ 29 30 //変数judgeに " 勝者:Aさん"を代入 31 judge = " 勝者:Aさん"; 32 33 //x-y+3を3で割った余りが1の場合、処理をする 34 }else if ((x - y + 3) % 3 == 1) { 35 36 //変数judgeに " 勝者:Bさん"を代入 37 judge = " 勝者:Bさん"; 38 39 //それ以外(x-y+3を3で割った余りが0)の場合、処理をする 40 }else { 41 42 //変数judgeに " 引き分け"を代入 43 judge = " 引き分け"; 44 } 45 46 47 //変数judgeが" 勝者:Aさん"と等しい、または" 引き分け"と等しい場合、処理をする 48 if(judge.equals(" 勝者:Aさん") || judge.equals( " 引き分け") ){ 49 50 //変数losecountに0を代入 51 losecount = 0; 52 53 //それ以外(変数judgeが" 勝者:Bさん"と等しい)の場合、処理をする 54 }else { 55 56 //変数losecountを1増やす 57 losecount++; 58 } 59 60 //あらかじめ用意された基本機能のうち、出力系を指定し、コンソールに回数とA,Bさんの手と勝者を表示後、改行をする 61 System.out.println(i+"回目 Aさん"+hand[x]+" Bさん"+hand[y]+judge); 62 63 //変数losecountが3の場合、処理をする 64 if(losecount == 3) { 65 66 //for文の処理を終了する 67 break; 68 } 69 } 70 } 71} 72
1回目 Aさんチョキ Bさんグー 勝者:Bさん 2回目 Aさんグー Bさんグー 引き分け 3回目 Aさんグー Bさんパー 勝者:Bさん 4回目 Aさんチョキ Bさんグー 勝者:Bさん 5回目 Aさんチョキ Bさんパー 勝者:Aさん 6回目 Aさんグー Bさんグー 引き分け 7回目 Aさんチョキ Bさんチョキ 引き分け 8回目 Aさんチョキ Bさんパー 勝者:Aさん 9回目 Aさんパー Bさんパー 引き分け 10回目 Aさんパー Bさんパー 引き分け
回答5件
あなたの回答
tips
プレビュー