import java.util.Scanner; public class Exer11 { public static void main(String[] args) { // [0.0, 1.0)範囲のdouble型の乱数を得る double r = Math.random(); // 標準出力への文字列の出力方法としてprintlnメソッドもある. // printlnは引数の文字列を出力した後,改行をする. System.out.println("r = " + r); // サイコロを作る int deme = dice(r, 6); System.out.println("deme = " + deme); // じゃんけんをする.0:ぐー, 1:ぱー,2:ちょき System.out.println("じゃんけんをします.数字を入力してね.0:ぐー, 1:ぱー,2:ちょき"); Scanner scanner = new Scanner(System.in); int hitoNoTe = scanner.nextInt(); scanner.close(); int kikaiNoTe = janken(r); System.out.println("じゃんけんぽん:" + kikaiNoTe); if (hitoNoTe == kikaiNoTe) { System.out.println("あいこ!"); } else if (hitoNoTe == (kikaiNoTe + 1) % 3) { System.out.println("あなたの勝ち!"); } else if ((hitoNoTe + 1) % 3 == kikaiNoTe) { System.out.println("あなたの負け!"); } } /** * サイコロを振る(出目の確率は均等) * * @param r 乱数[0.0, 1.0) * @param men 何面サイコロか * @return サイコロの目 */ private static int dice(double r, int men) { int deme = 0; // 6面サイコロ for (int i = 0; i < men; i++) { // int+int=intだが,int+double=doubleなので敢えて,i + 1.0としている if (r < (i + 1.0) / men) { deme = i + 1; break; } } return deme; // 0を返す場合は異常 } /** * ぐーちょきぱーのじゃんけんの手を決める * * @param r 乱数[0.0, 1.0) * @return 0:ぐー, 1:ぱー,2:ちょき */ private static int janken(double r) { int te = -1; // 6面サイコロ for (int i = 0; i < 3; i++) { if (r < (i + 1.0) / 3) { te = i; break; } } return te; // -1の場合は異常 } }