一、题目简介
为完成项目功能,主要需要使用if语句,通过询问朋友5个问题,提示用户回答该天是否在集合一中,是否在集合二中,是否在集合三中,是否在集合四中,是否在集合五中,如果这个数字在某个集合中,程序就将该集合的第一个数字加到day中去,从而确定他的生日是一个月的哪一天。每个问题都是在询问他的生日是否是5个数字集合的一个
这个游戏是很容易编程的,那么如何创建这个游戏呢?实际上,这个游戏背后的数学知识是非常简单的。这些数字不是随意组成一组的。它们放在五个集合中的方式是经过深思熟虑的。这五个集合的第一个数分别是1、2、4、8和1,它们分别对应二进制数的1、10、100、1000和10000。从1到31的十进制数最多用五个二进制数就可以表示。假设它是b5b4b3b2b1=b50000+b4000+b300+b20+b1。如果某天的二进制数在bk位为整数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。
该实验中主要是运用五个if语句来询问用户,用户的生日数字是否出现在已经定义好的,具有特殊意义的集合一、集合二、集合三、集合四、集合五中。定义一个整型 day变量,并定义其初始值为0。如果用户的生日出现在哪个集合,便将该集合中第一个数加到day变量上,将所有符合条件的集合中第一个数加起来便为day的数值,换句话说就是用户的生日。
二、源码的github链接
https://github.com/xumin1994/Personal-projects/blob/master/GuessBirthday.md
三、所设计的模块测试用例、测试结果截图
四、问题及解决方案、心得体会
实验中涉及最简单的单向if语句(单向if语句是指当且仅当条件为true时,执行一个动作)的使用;单向语句中if之后是一个布尔表达式,只有布尔表达式的值为true时才会执行块儿内语句。将自己所学的知识运用到实际操作当中,而不再是纸上谈兵。通过这次设计,我深刻感受到了Java中强大功能并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。