package 字符串;
import java.util.Scanner;
//需求:
//询问五次得到生日
//提示:
//生日最多不超过31
//31 = 16 + 8 + 4 + 2 + 1
//就是说31以内的任何一个数我们都可以用5位二进制来表示
//我们可以通过五次询问来确定这五位都是多少
//思路:
//1.准备代表五个集合的五个字符串,这个字符串要在内部换行
//编号为1的集合的内容:第一位上为1的1~31间数字的集合
//编号为2的集合的内容:第二位上为1的1~31间数字的集合
//编号为3的集合的内容:第三位上为1的1~31间数字的集合
//编号为4的集合的内容:第四位上为1的1~31间数字的集合
//编号为5的集合的内容:第五位上为1的1~31间数字的集合
//2.准备好后,开始交互:
//依次询问:
//是否在第一个集合里,用户输入0或1
//day += answer * 1;
//是否在第二个集合里,用户输入0或1
//day += answer * (1<<1);
//是否在第三个集合里,用户输入0或1
//day += answer * (1<<2);
//是否在第四个集合里,用户输入0或1
//day += answer * (1<<3);
//是否在第五个集合里,用户输入0或1
//day += answer * (1<<4);
//最终day就是生日所在
public class Case7_猜生日 {
public static void main(String[] args) {
String set1 = "1 3 5 7 \n" + "9 11 13 15 \n" + "17 19 21 23 \n" + "25 27 29 31\n";
String set2 = "2 3 6 7 \n" + "10 11 14 15 \n" + "18 19 22 23 \n" + "26 27 30 31\n";
String set3 = "4 5 6 7 \n" + "12 13 14 15 \n" + "20 21 22 23 \n" + "28 29 30 31\n";
String set4 = "8 9 10 11 \n" + "12 13 14 15 \n" + "24 25 26 27 \n" + "28 29 30 31 \n";
String set5 = "16 17 18 19 \n" + "20 21 22 23 \n" + "24 25 26 27 \n" + "28 29 30 31\n";
int day = 0;
Scanner input = new Scanner(System.in);
System.out.println("你的生日号数在这个集合里吗?\n");
System.out.println(set1);
System.out.println("\n如果在,请输入1;如果不在,请输入0:");
int answer = input.nextInt();
day += answer * 1;
System.out.println("你的生日号数在这个集合里吗?\n");
System.out.println(set2);
System.out.println("\n如果在,请输入1;如果不在,请输入0:");
answer = input.nextInt();
day += answer * (1<<1);
//或day += answer * 2;
System.out.println("你的生日号数在这个集合里吗?\n");
System.out.println(set3);
System.out.println("\n如果在,请输入1;如果不在,请输入0:");
answer = input.nextInt();
day += answer * (1<<2);
//或day += answer * 4;
System.out.println("你的生日号数在这个集合里吗?\n");
System.out.println(set4);
System.out.println("\n如果在,请输入1;如果不在,请输入0:");
answer = input.nextInt();
day += answer * (1<<3);
//或day += answer * 8;
System.out.println("你的生日号数在这个集合里吗?\n");
System.out.println(set5);
System.out.println("\n如果在,请输入1;如果不在,请输入0:");
answer = input.nextInt();
day += answer * (1<<4);
//或day += answer * 16;
System.out.println("你的生日是:" + day);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)