作为新手,刚刚进入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("谢谢您的访问!");
}
}
}
具体就是上面的意思,第一次写的不是很好好。希望大佬多多批评指正,我慢慢修改。