您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

用Java代码实现, 猜女朋友生日,很有意思!

2024/3/28 19:18:52发布4次查看
今天给大家分享:猜生日 java小游戏
最近看到一个很有趣的小游戏:询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都是询问他的生日是否是5个数字集合中的一个。这5个集合分别是:set1:1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31set2:2 3 6 7 10 11 14 15 18 19 22 23  26 27 30 31set3:4 5 6 7 12 13 14 15 set4:8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31set5:16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31生日是出现这一天的每个集合的第一个数字之和,例如生日是19,那么它会出现在集合1、2和5中,三个集合的第一个数字分别是1、2和16,它们的和就是19。
用java实现就是:package 贪心;/*作者 :xianglin创建时间 :2023/8/23 10:53文件 :gussbirthday.javaide :intellij idea*/import java.util.scanner;public class gussbirthday { 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"; string set2 = "2 3 6 7\n" + "10 11 14 15\n" + "18 19 22 23\n" + "26 27 30 31"; string set3 = " 4 5 6 7" + "\n 12 13 14 15" + "\n 20 21 22 23" + "\n 28 29 30 31"; string set4 = " 8 9 10 11" + "\n 12 13 14 15" + "\n 24 25 26 27" + "\n 28 29 30 31"; string set5 = " 16 17 18 19" + "\n 20 21 22 23" + "\n 24 25 26 27" + "\n 28 29 230 31"; int day = 0; // create scanner scanner input = new scanner(system.in); // prompt the user to answer questions system.out.println("is your birthday in set1?\n"); system.out.println(set1); system.out.println("\nenter 0 for no and 1 for yes: "); int answer = input.nextint(); if (answer == 1) day += 1; // prompt the user to answer questions system.out.println("is your birthday in set2?\n"); system.out.println(set2); system.out.println("\nenter 0 for no and 1 for yes: "); answer = input.nextint(); if (answer == 1) day += 2; // prompt the user to answer questions system.out.println("is your birthday in set3?\n"); system.out.println(set3); system.out.println("\nenter 0 for no and 1 for yes: "); answer = input.nextint(); if (answer == 1) day += 4; // prompt the user to answer questions system.out.println("is your birthday in set4?\n"); system.out.println(set4); system.out.println("\nenter 0 for no and 1 for yes: "); answer = input.nextint(); if (answer == 1) day += 8; // prompt the user to answer questions system.out.println("is your birthday in set5?\n"); system.out.println(set5); system.out.println("\nenter 0 for no and 1 for yes: "); answer = input.nextint(); if (answer == 1) day += 16; system.out.println("\nyour birthday is " + day + "!"); }}
输出:is your birthday in set1?1 3 5 79 11 13 1517 19 21 2325 27 29 31enter 0 for no and 1 for yes: 1is your birthday in set2?2 3 6 710 11 14 1518 19 22 2326 27 30 31enter 0 for no and 1 for yes: 1is your birthday in set3? 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31enter 0 for no and 1 for yes: 0is your birthday in set4? 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31enter 0 for no and 1 for yes: 0is your birthday in set5? 16 17 18 19 20 21 22 23 24 25 26 27 28 29 230 31enter 0 for no and 1 for yes: 1your birthday is 19!
这个游戏是很容易编程的。你可能很好奇想知道如何创建这个游戏。实际上,这个游戏背后的数学知识是非常简单的。这些数字不是随意组成一组的。它们放在五个集合中的方式是经过深思熟虑的。这五个集合的第一个数分别是1、2、4、8和16,它们分别对应二进制数的1、10、100、1000和10000。从1到31的十进制数最多用五个二进制数就可以表示,如图3-2a所示。假设它是b5b4b3b2b1,那么b5b4b3b2b1=b50000 + b4000 + b300 + b20+b1,如图所示。如果某天的二进制数在b位为整数1,那么该数就该出现在setk中。例如:数字19的二进制是10011,所以它就该出现在集合1、集合2和集合5中。它就是二进制数1+10+10000=10011或者十进制数1+2+16=19。数字31的二进制是11111,所以它就会出现在集合1,集合2、集合3、集合4和集合5中。它就是二进制数1+10+100+1000+10000=11111,或是十进制数1+2+4+8+16=31。 
以上就是用java代码实现, 猜女朋友生日,很有意思!的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录