java-猜生日号数

      作为新手,刚刚进入java这一个大家庭。是一个实实在在的小白。我写这些是为了给自己学习之后的一个总结。还有就是也希望能够得到一些大佬们的对我编码的一些指教与建议。希望自己越来越好。

需求分析:

        给出指定的集合;

        接受用户反馈的数字(0和1);

        循环4次;

        输出用户心理所选择的数。

所涉及的一些java的基本知识:

        java的输入输出流;

        位运算;

        for循环、if判断、while等。

所涉及的算法分析是:

         1~31这些整数是可以用4位的二进制数表示,我们知道每一个整数它对应的二进制是唯一的,就是说它的转换是存在一个公式。当我们明确了这个4位上的每一位代表的具体数值(0或1),我们就可以通过计算,把这整数计算出来。我们第一个供选择的集合是1~31内的所有2^0都为1的数,如果在,那就记录下你的选择的值1,不是则是0;依次类推我们就可以得出这四位二进制每一位上的具体数值,然后通过二进制转换为整数(10进制)就可以得到,用户心里所选择的号数。

主要代码:

import java.util.Scanner;

class Test {
	public static void main(String[] args) {
                //XXX1  二进制
		String tet1 = " 1,3,5,7 \n " + "9,11,13,15 \n " + "17,19,21,23 \n " + "25,27,29,31 ";
                //XX1X  二进制
		String tet2 = " 2,3,6,7 \n " + "10,11,14,15 \n " + "18,19,22,23 \n " + "26,27,30,31 ";
                //X1XX  二进制
		String tet3 = " 4,5,6,7 \n " + "12,13,14,15 \n " + "20,21,22,23 \n " + "28,29,30,31 ";
                //1XXX  二进制
		String tet4 = " 8,9,10,11 \n " + "12,13,14,15 \n " + "24,25,26,27 \n " + "28,29,30,31 ";
		int day = 0;
		boolean fals = true;
		Scanner input = new Scanner(System.in);
		System.out.println("生日号数测试器!");
		System.out.println("1、进入测一测\n0、退出。");
		int n = input.nextInt();
		if (n == 1) {
			for (int i = 0; i < 4; i++) {
				System.out.println("你的生日在这集合里面么?");
				if (i == 0) {
					System.out.print(tet1);
				} else if (i == 1) {
					System.out.print(tet2);
				} else if (i == 2) {
					System.out.print(tet3);
				} else if (i == 3) {
					System.out.print(tet4);
				} else {
					break;
				}
				System.out.println("\n(温馨提示)是请输入1,否请输入0:");
				int anwer = input.nextInt();
				if (anwer == 1 || anwer == 0) {
					day += anwer * (1 << i);
				} else {
					System.out.println("你的输入有误!");
					fals = false;
					break;
				}
			}
			while (fals) {
				System.out.println("您生日所在的所在的号数为:" + day + "号");
			}
		} else {
			System.out.println("谢谢您的访问!");
		}
	}

}
具体就是上面的意思,第一次写的不是很好好。希望大佬多多批评指正,我慢慢修改。



        



猜你喜欢

转载自blog.csdn.net/m0_37489491/article/details/79947680