Java猜生日号数

看代码和解释即可

package 猜生日号数;

import java.util.Scanner;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-20-15-41
 */
/*  分析:
    因为1~31这些数是可以用5位的二进制表示的,因为16+8+4+2+1
    然后把这5个数一一用2进制表示
    1:xxxx1 最小为1 然后3、7、15...
    2:xxx1x
    4:xx1xx
    8:x1xxx
    16:1xxxx
    好找点的一点技巧是:把某一位确定下来后,然后别的某1位为1的情况,别的某2位的情况那样写
 */
public class Demo {
    public static void main(String[] args) {
        int day = 0;
        int answer;
        int[][][] dates = {
                {{1,3,5,7},{9,11,13,15},{17,19,21,23},{25,27,29,31}},
                {{2,3,6,7},{10,11,14,15},{18,19,22,23},{26,27,30,31}},
                {{4,5,6,7},{12,13,14,15},{20,21,22,23},{28,29,30,31}},
                {{8,9,10,11},{12,13,14,15},{24,25,26,27},{28,29,30,31}},
                {{16,17,18,19},{20,21,22,23},{24,25,26,27},{28,29,30,31}}
        };
        Scanner input = new Scanner(System.in);
        for(int i=0;i<5;i++){
            System.out.println("Is your birthday in Set "+(i+1)+"?");
            for(int j = 0;j<4;j++){
                for(int k=0;k<4;k++){
                    System.out.printf("%4d",dates[i][j][k]);
                }
                System.out.println();//5行打印完一行换一行
            }
            System.out.print("\nEnter 0 for No and 1 for Yes: ");
            //接受输入的位置注意下
            answer = input.nextInt();
            if(answer==1){
                day += dates[i][0][0];
            }
        }
        System.out.print("你的生日是 "+day+"号!");
    }
}

Java猜生日号数

完!

上一篇:计算天数的两种办法/思路


下一篇:29.手把手系列之二进制部署高可用k8s集群