ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java Case Study 3

2021-04-13 09:32:44  阅读:214  来源: 互联网

标签:Case Java String fen Study System int result 31


Java Case Study 3

case 7:猜生日

逻辑:通过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+" 号");
    }
    
}

case 8:“读出金额”

需求:

  • 给定5位整数2位小数的金额,将其转换为半中文大写金额
  • 89735.12 转换为 8万9千7百3十5元1角2分

限制:
由于目前掌握知识不足,还做不到全中文

思路

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);
    }
    
}

标签:Case,Java,String,fen,Study,System,int,result,31
来源: https://blog.csdn.net/weixin_43168696/article/details/115612057

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有