回答我九个问题,我就可以推算出你的生日(java版)

      在街上有没有见过某个算命先生,声称只要你回答他几个问题他就可以推算出你的姓氏等信息?为什么这么奇妙呢?难道他找你的会算吗?呵呵……下面就让我给大家简单解释下其中的秘密吧……    
    先说说我这个推算出你的生日的程序的实现方法吧。
    简介:我们知道任何的数字,都可以将其分解成1,2,4,8,16……这样的数字的和(2的指数),首先我们将1大到12分解成1,2,4,8这四个数字的和:   1=1;
                        2=    2;
                        3=1+2;
4=       4;
5=1+   4;
6=    2+4;
7=1+2+4;
8=            8;
9=1+        8;
      10=    2+    8;
      11=1+2+    8;
              12=        4+8;
然后把含有1的放在一起组成第一组:1,3,5,7,9,11
          含有2的放在一起组成第二组:2,3,6,7,10,11
          含有4的放在一起组成第三组:4,5,6,7,12
          含有8的放在一起组成第四组:8,9,10,11,12
定义一个整数i 开始为0;
好了,下面就开始问你问题了,第一个问题是:你的出生月份是第一组这些数字中的一个吗?如果是i就加1。
                                                 第二个问题是: 你的出生月份是第二组这些数字中的一个吗?如果是i就加2。
 第三个问题是: 你的出生月份是第三组这些数字中的一个吗?如果是i就加4。
 第四个问题是: 你的出生月份是第四组这些数字中的一个吗?如果是i就加8。
最后算出的i的值就是你出生月份的值。
同样再把1到31分解成1,2,4,8,16这些数字的和,然后分为五组。这样再问五个问题,就可以推算出你的出生的天数了。
同理,我们如果把百家姓的姓氏编个号,然后按这种方法排列一下,只需要问六个问题就可以推出你的姓氏了。其他的推算都是类似的方法。

上面已经说的很清楚了,如果还是不清楚的,可以参考一下实现代码。呵呵……仅供娱乐而已,并不是什么大作,献丑了……

package guessyourbirthday;
import javax.swing.JOptionPane;
public class GuesssYourBirthday {
    public static void main(String[] args)
    {
         String month1 =
                 "1\t     3\t      5\t\n"+
                 "7\t     9\t     11";
         String month2 =
                 "2\t     3\t       6\t\n"+
                 "7\t    10\t     11";
         String month3 =
                 "4\t     5\t      6\t\n"+
                 "7\t    12";
         String month4 = 
                 "8\t     9\t     10\t\n"+
                "11\t   12\t";
         String day1 =
             "    1\t     3\t     5\t     7\t\n"+
             "    9\t    11\t    13\t    15\t\n"+
              "  17\t    19\t    21\t    23\n"+
             "   25\t    27\t    29\t    31";
        String day2 =
             "     2\t     3\t     6\t     7\t\n"+
             "    10\t    11\t    14\t    15\t\n"+
             "    18\t    19\t    22\t    23\t\n"+
             "    26\t    27\t    30\t    31";
         String day3 =
            "      4\t     5\t     6\t     7\t\n"+
            "     12\t    13\t    14\t    15\t\n"+
             "    20\t    21\t    22\t    23\t\n"+
             "    28\t    29\t    30\t    31";
        String day4 =
             "     8\t     9\t    10\t    11\t\n"+
             "    12\t    13\t    14\t    15\t\n"+
             "    24\t    25\t    26\t    27\t\n"+
             "    28\t    29\t    30\t    31";
        String day5 =
             "    16\t    17\t    18\t    19\t\n"+
             "    20\t    21\t    22\t    23\t\n"+
             "    24\t    25\t    26\t    27\t\n"+
             "    28\t    29\t    30\t    31";
        int month = 0; 
        int day = 0;
         int answer1 = JOptionPane.showConfirmDialog(null, "亲,你的出生月份在这些数字中吗?\n" + month1);
         if(answer1 == JOptionPane.YES_OPTION)
             month += 1;
         answer1= JOptionPane.showConfirmDialog(null, "亲,你的出生月份在这些数字中吗?\n" + month2);
         if(answer1 == JOptionPane.YES_OPTION)
             month += 2;
         answer1 = JOptionPane.showConfirmDialog(null, "亲,你的出生月份在这些数字中吗?\n" + month3);
         if(answer1 == JOptionPane.YES_OPTION)
             month += 4;
         answer1 = JOptionPane.showConfirmDialog(null, "亲,你的出生月份在这些数字中吗?\n" + month4);
         if(answer1 == JOptionPane.YES_OPTION)
             month += 8;
         
        int answer2=JOptionPane.showConfirmDialog(null, "亲,你的出生日期在这些数字中吗?\n" + day1);
        if(answer2==JOptionPane.YES_OPTION)
             day+=1;
         
         answer2=JOptionPane.showConfirmDialog(null, "亲,你的出生日期在这些数字中吗?\n" + day2);
         if(answer2==JOptionPane.YES_OPTION)
             day+=2;
         
         answer2=JOptionPane.showConfirmDialog(null, "亲,你的出生日期在这些数字中吗?\n" + day3);
         if(answer2==JOptionPane.YES_OPTION)
            day+=4;
         
         answer2=JOptionPane.showConfirmDialog(null, "亲,你的出生日期在这些数字中吗?\n" + day4);
        if(answer2==JOptionPane.YES_OPTION)
             day+=8;
         
         answer2=JOptionPane.showConfirmDialog(null, "亲,你的出生日期在这些数字中吗?\n" + day5);
         if(answer2==JOptionPane.YES_OPTION)
             day+=16;
         
        JOptionPane.showMessageDialog(null, "O(∩_∩)O哈哈~,亲,我猜到你的生日是 " + month + "月" + day + "号!");
     }
 
    }
运行效果截图: 回答我九个问题,我就可以推算出你的生日(java版) - 水到绝境是飞瀑 - 潜水的小企鹅
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值