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

编程入门 行业动态 更新时间:2024-10-22 18:34:02

用Java代码实现, 猜女朋友生日,<a href=https://www.elefans.com/category/jswz/34/1373306.html style=很有意思!"/>

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

大家好,我是田哥

今天给大家分享:猜生日 Java小游戏

最近看到一个很有趣的小游戏:

询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都是询问他的生日是否是5个数字集合中的一个。

这5个集合分别是:

set1:1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31

set2:2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31

set3:4 5 6 7 12 13 14 15 

set4:8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31

set5: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
创建时间 :2020/9/21 10:53
文件     :GussBirthday.java
IDE      :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 ScannerScanner input = new Scanner(System.in);// Prompt the user to answer questionsSystem.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 questionsSystem.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 questionsSystem.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 questionsSystem.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 questionsSystem.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 7
9 11 13 15
17 19 21 23
25 27 29 31Enter 0 for No and 1 for Yes: 
1
Is your birthday in Set2?2 3 6 7
10 11 14 15
18 19 22 23
26 27 30 31Enter 0 for No and 1 for Yes: 
1
Is your birthday in Set3?4  5  6  712 13 14 1520 21 22 2328 29 30 31Enter 0 for No and 1 for Yes: 
0
Is your birthday in Set4?8  9 10 1112 13 14 1524 25 26 2728 29 30 31Enter 0 for No and 1 for Yes: 
0
Is your birthday in Set5?16 17 18 1920 21 22 2324 25 26 2728 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代码实现, 猜女朋友生日,很有意思!

本文发布于:2024-03-09 09:19:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724589.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:很有意思   女朋友   生日   代码   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!