Best Java Projects for Kids: Birthday Guessing Game

Geekedu is an expert in Coding and Math learning. Our goal is to inspire and empower youth to use their knowledge of technology to become the influencers, inventors and innovators of the future.

Table of Content

Guess the birthday Java game

There is a really fun game:

Ask your friend 5 number questions  to find out which day of month is his/her birthday. Each question asks whether his birthday is one of the five numbers.

The 5 sets are:

  1. Set1:1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
  2. Set2:2 3 6 7 10 11 14 15 18 19 22 23  26 27 30 31
  3. Set3 :4 5 6 7 12 13 14 15
  4. Set4 :8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
  5. Set5:16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Birthday is the sum of the first number of each set that appears on this day. For example, birthday is 19th, then it will appear in sets 1, 2 and 5. The first numbers of the three sets are 1, 2 and 16 respectively. Their sum is 19.

The implementation in Java is:

Import the 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 Scanner
        Scanner input = new Scanner(System.in);

        // Prompt the user to answer questions
        System.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 questions
        System.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 questions
        System.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 questions
        System.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 questions
        System.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 + "!");
    }
}

Output:

Is your birthday in Set1?

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

Enter 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  31

Enter 0 for No and 1 for Yes: 
1
Is your birthday in Set3?

 4   5   6   7 
 12  13  14  15 
 20  21  22  23 
 28  29  30  31

Enter 0 for No and 1 for Yes: 
0
Is your birthday in Set4?

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

Enter 0 for No and 1 for Yes: 
0
Is your birthday in Set5?

 16  17  18  19 
 20  21  22  23 
 24  25  26  27 
 28  29  230  31

Enter 0 for No and 1 for Yes: 
1

Your birthday is 19!

This game is very easy to program. You may be curious to know how to create this game. In fact, the mathematical knowledge behind this game is very simple. These numbers are not randomly grouped together. The way they are placed in the five sets is well thought out.

The first numbers of these five sets are 1, 2, 4, 8, and 16, respectively, which correspond to binary numbers 1、10、100、1000 and 10000. The decimal numbers from 1 to 31 can be represented by up to five binary numbers, as shown in Figure. It is assumed that b5b4b3b2b1, so b5b4b3b2b1=b50000 + b4000 + b300 + b20+b1.

as the picture shows. If the binary number of a certain day is an integer 1 in the b position, then the number should appear in Set.

For example:

the binary number 19 is 10011, so it should appear in set 1, set 2, and set 5. It is a binary number 1+10+10000=10011or a decimal number 1+2+16=19.
The binary number 31 is 11111, so it will appear in set 1, set 2, set 3, set 4, and set 5. It is a binary number 1+10+100+1000+10000=11111, or a decimal number 1+2+4+8+16=31.

Sign up and get a 60-minute free assessment class

Get Started