前回に引き続き、じゃんけんのプログラムを作っています。これは三回勝ったら1回勝ちとし、それを止めるというまで繰り返して最後に総勝敗数を表示させたいのですが、うまくいきません。どこをどう直せば良いでしょうか・・・
java
1import java.util.*; 2 3public class Janken5m { 4 static Scanner stdIn = new Scanner(System.in); 5 static Random rand = new Random(); 6 7 public static void main(String[] args) { 8 boolean cont = true; 9 int w=play3(); 10 int l=play3(); 11 12 do { 13 // ここからplay3の処理 14 play3(); 15 //ここまでがplay3の処理 16 System.out.println("続けますか。0:no 1:yes"); 17 cont = stdIn.nextInt()==1; 18 }while(cont); 19 System.out.println(w+"勝"+l+"敗"); 20 } 21 static int play1() { // 関数値で勝者を返す 1:人 2:コンピュータ 22 int c; 23 int h; 24 int r; 25 do{ 26 System.out.print("手(0:グー/ 1: テョキ/ 2:パー) ? "); 27 c = rand.nextInt(3); 28 h = stdIn.nextInt(); 29 print("人", h); 30 print("コンピュータ", c); 31 r = r = (c-h+3)%3; 32 switch(r) { 33 case 0: System.out.println("あいこ"); break; 34 case 1: System.out.println("人の勝ち"); break; 35 case 2: System.out.println("コンピュータの勝ち"); break; 36 } 37 }while(r==0); 38 return r; 39 } 40 41 static int play3(){ 42 int w=0; int l=0; 43 int wc=0, wh=0; 44 int r=0; 45 while(wc<3 && wh<3) { 46 r=play1(); 47 if(r==1) wh++; 48 else if(r==2) wc++; 49 } 50 51 if(wh==3) {System.out.println("3勝"+wc+"敗で人の勝ちです。" ); w++; } 52 else {System.out.println("3勝"+wh+"敗でコンピュータの勝ちです。"); l++; } 53 54 return r; 55 } 56 57 static void print(String who, int x) { 58 switch(x) { 59 case 0: System.out.println(who+":グー"); break; 60 case 1: System.out.println(who+":テョキ"); break; 61 case 2: System.out.println(who+":パー"); break; 62 } 63 } 64} 65 66コード
ちなみに、実行するとこのような感じで勝敗数がおかしくなってしまいます。
あと、三回勝負で一旦決着がついた後に「続けますか?」と表示されるはずなのに表示されません
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:パー
コンピュータの勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:パー
コンピュータの勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
3勝2敗で人の勝ちです。
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
3勝0敗で人の勝ちです。
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:パー
コンピュータの勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
3勝1敗で人の勝ちです。
続けますか。0:no 1:yes
1
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:パー
コンピュータの勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:パー
コンピュータの勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:グー
あいこ
手(0:グー/ 1: テョキ/ 2:パー) ? 0
人:グー
コンピュータ:テョキ
人の勝ち
3勝2敗で人の勝ちです。
続けますか。0:no 1:yes
0
1勝1敗
回答1件
あなたの回答
tips
プレビュー