fork download
  1. import java.util.Scanner;
  2. public class Main {
  3.  
  4. public static void main(String[] args) {
  5. System.out.println("プレーヤー同士でジャンケンをします。対戦人数を入力して下さい(2人以上8人以内)"); // とりあえず20人を上限
  6. Scanner scanner = new Scanner(System.in);
  7. String numOfManStr = scanner.nextLine();
  8. if (numOfManStr.matches("[2-8]")==false) {
  9. System.out.println("指定された人数を入力して下さい。終了します");
  10. System.exit(1); // 異常終了
  11. }
  12. int numOfMan = Integer.parseInt(numOfManStr);
  13. String[] manNames = new String[numOfMan];
  14. for (int i=0; i<numOfMan; i++) {
  15. manNames[i] = "MAN#"+i;
  16. }
  17. // for (int i=0; i<numOfMan; i++) {
  18. // System.out.println(manNames[i]);
  19. // }
  20. boolean[] survival = new boolean[numOfMan];
  21. for (int i=0; i<numOfMan; i++) {
  22. survival[i] = true;
  23. }
  24.  
  25. int[] manHands = new int[numOfMan];
  26. String[] manHandsStr = new String[numOfMan];
  27. int counter_0; int counter_1; int counter_2;
  28. int x;
  29.  
  30. // 0はグー、1はチョキ、2はパーをそれぞれ表すものとする
  31. do {
  32. for (int i=0; i<numOfMan; i++) {
  33. System.out.println("プレーヤ―"+manNames[i]+"さんの手を入力して下さい"); // 後に結合
  34. System.out.println("グーなら0、チョキなら1、パーなら2を入力して下さい");
  35. manHandsStr[i] = scanner.nextLine();
  36. if (manHandsStr[i].matches("[0-2]")==false) {
  37. System.out.println("指定された数値を入力して下さい。終了します");
  38. System.exit(2); // 異常終了
  39. }
  40. manHands[i] = Integer.parseInt(manHandsStr[i]);
  41. }
  42. counter_0 = 0; counter_1 = 0; counter_2 = 0;
  43. for(int i=0; i<numOfMan; i++) {
  44. if(manHands[i]==0) {
  45. counter_0 += 1;
  46. } else if(manHands[i]==1) {
  47. counter_1 += 1;
  48. } else { // manHands[i]==2 の時
  49. counter_2 += 1;
  50. }
  51. }
  52. System.out.println("グーの人数は"+counter_0+"、 チョキの人数は"+counter_1+"、 パーの人数は"+counter_2);
  53. x = 0;
  54. if (counter_0 > 0) x += 1;
  55. if (counter_1 > 0) x += 1;
  56. if (counter_2 > 0) x += 1;
  57. } while(x==1 || x==3); // あいこの時
  58.  
  59. // 以降はx==2(なんらかの勝敗確定)という条件をクリアしている
  60. int numOfSuvivar = 0; // 初期化
  61. if (counter_0 > 0 && counter_1 > 0) {
  62. for (int i=0; i<numOfMan; i++) {
  63. if (manHands[i]==1) {
  64. survival[i] = false; // チョキは敗者
  65. }
  66. }
  67. System.out.println("この時点で残っているのは");
  68. for (int i=0; i<numOfMan; i++) {
  69. if (survival[i]==true) {
  70. System.out.println(manNames[i]);
  71. numOfSuvivar += 1;
  72. }
  73. }
  74. } else if (counter_1 > 0 && counter_2 > 0) {
  75. for (int i=0; i<numOfMan; i++) {
  76. if (manHands[i]==2) {
  77. survival[i] = false; // パーは敗者
  78. }
  79. }
  80. System.out.println("この時点で残っているのは");
  81. for (int i=0; i<numOfMan; i++) {
  82. if (survival[i]==true) {
  83. System.out.println(manNames[i]);
  84. numOfSuvivar += 1;
  85. }
  86. }
  87. } else { // counter_2 > 0 && counter_0 > 0 の時
  88. for (int i=0; i<numOfMan; i++) {
  89. if (manHands[i]==0) {
  90. survival[i] = false; // グーは敗者
  91. }
  92. }
  93. System.out.println("この時点で残っているのは");
  94. for (int i=0; i<numOfMan; i++) {
  95. if (survival[i]==true) {
  96. System.out.println(manNames[i]);
  97. numOfSuvivar += 1;
  98. }
  99. }
  100. }
  101. System.out.println("の"+numOfSuvivar+"人");
  102. if (numOfSuvivar==1) {
  103. for (int i=0; i<numOfMan; i++) {
  104. if (survival[i]==true) {
  105. System.out.println("最終勝者は"+manNames[i]);
  106. }
  107. }
  108. System.exit(0); // 正常終了
  109. }
  110.  
  111. while (numOfSuvivar!=1) {
  112. do {
  113. for (int i=0; i<numOfMan; i++) {
  114. if (survival[i]==true) {
  115. manHandsStr[i] = scanner.nextLine();
  116. if (manHandsStr[i].matches("[0-2]")==false) {
  117. System.out.println("指定された数値を入力して下さい。終了します");
  118. System.exit(2); // 異常終了
  119. }
  120. manHands[i] = Integer.parseInt(manHandsStr[i]);
  121. } else {
  122. manHands[i] = 3;
  123. }
  124.  
  125. }
  126. counter_0 = 0; counter_1 = 0; counter_2 = 0;
  127. for (int i=0; i<numOfMan; i++) {
  128. if (manHands[i]==0) {
  129. counter_0 += 1;
  130. } else if (manHands[i]==1) {
  131. counter_1 += 1;
  132. } else if (manHands[i]==2) { // cpuHands[i]==2 の時
  133. counter_2 += 1;
  134. }
  135. }
  136. System.out.println("グーの人数は"+counter_0+"、 チョキの人数は"+counter_1+"、 パーの人数は"+counter_2);
  137. x = 0;
  138. if (counter_0 > 0) x += 1;
  139. if (counter_1 > 0) x += 1;
  140. if (counter_2 > 0) x += 1;
  141. } while (x==1 || x==3);
  142.  
  143. numOfSuvivar = 0; // 初期化
  144. if (counter_0 > 0 && counter_1 > 0) {
  145. for (int i=0; i<numOfMan; i++) {
  146. if (manHands[i]==1) {
  147. survival[i] = false; // チョキは敗者
  148. }
  149. }
  150. System.out.println("この時点で残っているのは");
  151. for (int i=0; i<numOfMan; i++) {
  152. if (survival[i]==true) {
  153. System.out.println(manNames[i]);
  154. numOfSuvivar += 1;
  155. }
  156. }
  157.  
  158. } else if (counter_1 > 0 && counter_2 > 0) {
  159. for (int i=0; i<numOfMan; i++) {
  160. if (manHands[i]==2) {
  161. survival[i] = false; // パーは敗者
  162. }
  163. }
  164. System.out.println("この時点で残っているのは");
  165. for (int i=0; i<numOfMan; i++) {
  166. if (survival[i]==true) {
  167. System.out.println(manNames[i]);
  168. numOfSuvivar += 1;
  169. }
  170. }
  171.  
  172. } else if (counter_2 > 0 && counter_0 > 0) {
  173. for (int i=0; i<numOfMan; i++) {
  174. if (manHands[i]==0) {
  175. survival[i] = false; // グーは敗者
  176. }
  177. }
  178. System.out.println("この時点で残っているのは");
  179. for (int i=0; i<numOfMan; i++) {
  180. if (survival[i]==true) {
  181. System.out.println(manNames[i]);
  182. numOfSuvivar += 1;
  183. }
  184. }
  185. }
  186. System.out.println("の"+numOfSuvivar+"人");
  187. if (numOfSuvivar==1) {
  188. for (int i=0; i<numOfMan; i++) {
  189. if (survival[i]==true) {
  190. System.out.println("勝者は"+manNames[i]);
  191. }
  192. }
  193. break; // 正常終了
  194. }
  195. }
  196.  
  197. }
  198. }
Success #stdin #stdout 0.06s 4386816KB
stdin
4
0
1
2
0
1
2
2
2
stdout
プレーヤー同士でジャンケンをします。対戦人数を入力して下さい(2人以上8人以内)
プレーヤ―MAN#0さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
プレーヤ―MAN#1さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
プレーヤ―MAN#2さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
プレーヤ―MAN#3さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
グーの人数は2、 チョキの人数は1、 パーの人数は1
プレーヤ―MAN#0さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
プレーヤ―MAN#1さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
プレーヤ―MAN#2さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
プレーヤ―MAN#3さんの手を入力して下さい
グーなら0、チョキなら1、パーなら2を入力して下さい
グーの人数は0、 チョキの人数は1、 パーの人数は3
この時点で残っているのは
MAN#0
の1人
最終勝者はMAN#0