猜生日
通过一个三维数组来存储五个集合的数字来简化程序,然后循环提示用户进行回答,首先显示每个集合的数字,然后提示用户回答这个生日是否在这个集合当中。如果该天实在某个集合当中,那么集合的第一个数字就将被加到变量day。
在本程序中,每个集合的数字并不是随便设置的,你可以发现生日的天数在一个月当中,是小于32的,完全可以用五位二进制数来表示,第一个集合当中的数字是第一位为1的数字集合,第二个集合是第二位为1的数字集合,以此类推。
当你的生日在该集合当中,就说明这个集合所对应的位为1,从而猜出了你的生日。
Java实现代码
import java.util.Scanner;
public class Test{
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,20,31}}};
Scanner input = new Scanner((System.in));
for(int i = 0;i<5;i++){
System.out.println("Is your birthday inn 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();
}
System.out.print("\nEnter 0 for No and 1 for Yes: ");
answer = input.nextInt();
if(answer == 1)
day += dates[i][0][0];
}
System.out.println("Your birth day is " + day);
}
}