逻辑:通过5次猜测,来猜1~31之间的数
可以通过5位二进制数来进行表示
询问5次即每次询问一位是0还是1
通过列出为1的值并确定是否在其中来判断该位的值
所需知识:
准备代表5个集合的5个字符串,这个字符串要在内部换行
每个集合的内容是每一位上为1时的1~31间的数字的集合
准备好后开始交互
依次询问是否在此集合中,用户输入0或者1
第一个集合:day += answer * 1
第二个集合:day += answer * (1<<1)
以此类推
最终day就是生日所在的号数
import java.util.Scanner; public class Case7 { 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 30 31"; int day = 0; Scanner kb = new Scanner(System.in); System.out.print("你的生日号数在这个集合里面吗?\n"); System.out.print(set1); System.out.print("\n是,请输入1,否则输入0:"); day += kb.nextInt() * 1; System.out.print("你的生日号数在这个集合里面吗?\n"); System.out.print(set2); System.out.print("\n是,请输入1,否则输入0:"); day += kb.nextInt() * (1 << 1); System.out.print("你的生日号数在这个集合里面吗?\n"); System.out.print(set3); System.out.print("\n是,请输入1,否则输入0:"); day += kb.nextInt() * (1 << 2); System.out.print("你的生日号数在这个集合里面吗?\n"); System.out.print(set4); System.out.print("\n是,请输入1,否则输入0:"); day += kb.nextInt() * (1 << 3); System.out.print("你的生日号数在这个集合里面吗?\n"); System.out.print(set5); System.out.print("\n是,请输入1,否则输入0:"); day += kb.nextInt() * (1 << 4); System.out.println("你的生日是:"+day+" 号"); } }
需求:
限制:
由于目前掌握知识不足,还做不到全中文
89735.12 * 100 = 8973512分
分别提取万 千 百 十 元 角 分
除法可以留高位
取余可以舍高位
8973512 / 1000000 = 8
8973512 % 1000000 = 973512
973512 / 100000 = 9
…
输出有两种方式,①打印不换行②拼接
package case8; public class Case8 { public static void main(String[] args) { String result = ""; double money = 98735.12; int fen = (int)(money * 100); int wan = fen / 1000000; result += (wan + "萬"); fen = fen % 1000000; int qian = fen / 100000; result += (qian + "仟"); fen = fen % 100000; int bai = fen / 10000; result += (bai + "佰"); fen = fen % 10000; int shi = fen / 1000; result += (shi + "拾"); fen = fen % 1000; int yuan = fen / 100; result += (yuan + "圆"); fen = fen % 100; int jiao = fen / 10; result += (jiao + "角"); fen = fen % 10; result += (fen + "分"); System.out.println(result); } }