Java初学笔记——13.Case7_询问五次猜测出生日期

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);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值