回答編集履歴

1 再入力

f-hanako

f-hanako score 149

2015/07/23 16:09  投稿

1. 無限ループについて
Forをまわしたとき、`奇数の時の処理`では `i の値`を減らしていますが、
`偶数の時の処理`では`i の値`に何も処理を施していないので、
値が変化しないために無限ループが起きています。
```Java
for(int i =cm;0<=i;){
 if(cm%2 !=0){
   //奇数の時の処理
 }else{
   System.out.println("奇数を入力してください。");
   i = 0;
   cm=Integer.parseInt(coin); //再入力
 }
}
```
2. 勝負判定
一例です。
それぞれプレイヤーの現在所持しているコインの枚数を保管する変数を用意し、
プレイヤーがコインをとったときに、その枚数を変数に保管します。
最後、コインの枚数が0になりループを抜けた後に、
それぞれの所持しているコインの枚数を比較し、勝利判定を出す。
```Java
int player1,player2 = 0;
for(int i =cm;0<=i;){
 if(cm%2 !=0){
   //奇数の時の処理
     if(turnCount % 2 ==0){
       System.out.println(user1+"さんの番です");
       player1 += takeCoin;
     }else{
       System.out.println(user2+"さんの番です");
       player2 += takeCoin;
     }
   }else{
   System.out.println("奇数を入力してください。");
   i = 0;
   cm=Integer.parseInt(coin); //再入力
 }
}
//コイン枚数の比較
if (player1%2 = 0)
 System.out.println(user2+"さんの勝利です");
}else if(player2%2 = 0){
 System.out.println(user2+"さんの勝利です");
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る