十一、常用API——练习

常用API------练习

  • [练习1 键盘录入:](#练习1 键盘录入:)
  • [练习2 算法水题:](#练习2 算法水题:)
  • [练习3 算法水题:](#练习3 算法水题:)
  • [练习4 算法水题:](#练习4 算法水题:)
  • [练习5 算法水题:](#练习5 算法水题:)

练习1 键盘录入:

键盘录入一些1~100之间的整数,并添加到集合中。

直到集合中所有数据和超过200为止

java 复制代码
public static void main(String[] args) {
        /*键盘录入一些1~100之间的整数,并添加到集合中。
          直到集合中所有数据和超过200为止*/

        //0.创建一个集合用来添加数据
        ArrayList<Integer> list = new ArrayList<>();
        //1.键盘录入数据
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入一个整数:");
            String numStr = sc.nextLine();
            int num = Integer.parseInt(numStr);
            //数据异常判断
            if (num < 1 || num > 100) {
                System.out.println("当前数字不在1~100的范围当中,请重新输入!");
                continue;
            }

            /*将数据添加到集合中
             * 细节:
             * num:基本数据类型
             * 集合里面的数据是Integer
             * 在添加数据的时候触发了自动装箱*/
            list.add(num);

            //统计数据中所有的数据和
            int sum = getSum(list);
            //对sum进行判断
            if (sum > 200){
                System.out.println("集合中所有的数字满足要求!");
                break;
            }
        }
        //验证要求
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + " ");
        }
    }

    private static int getSum(ArrayList<Integer> list) {
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            int num = list.get(i);
            sum += num;
        }
        return sum;
    }

练习2 算法水题:

自己实现parseInt方法的效果,将字符串形式的数据转成整数。
要求:

  • 字符串中只能是数字不能有其他字符
  • 最少一位,最多10位
  • 0不能开头
java 复制代码
public static void main(String[] args) {
        /*自己实现parseInt方法的效果,将字符串形式的数据转成整数。
          要求:
            字符串中只能是数字不能有其他字符
            最少一位,最多10位
            0不能开头*/
        //0.定义一个字符串
        String str = "123456789";
        //1.校验字符串
        //习惯:会先把异常数据进行过滤,剩下来就是正常的数据
        if (!str.matches("[1-9]\\d{0,9}")) {
            //错误的数据
            System.out.println("数据格式有误");
        } else {
            //正确的数据
            System.out.println("数据格式正确");
            //2. 定义一个变量表示最终的结果
            int num = 0;

            //3.遍历字符串得到里面的每一个字符
            for (int i = 0; i < str.length(); i++) {
                int c = str.charAt(i) - '0';
                num = num * 10 + c;
            }
            System.out.println(num);
        }
    }

练习3 算法水题:

定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制

java 复制代码
public static void main(String[] args) {
        /*定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制*/
        System.out.println(toBinaryString(123));

        //验证
        System.out.println(Integer.toBinaryString(123));
    }

    private static String toBinaryString(int num) {
        /*核心逻辑:不断地去除以2,得到余数,一直到商为0就结束
        * 需要把余数倒着拼接起来*/

        //0.定义一个StringBuilder()用来 拼接余数
        StringBuilder sb = new StringBuilder();

        //1.利用循环不断地除以2获取余数
        while (true){
            if (num==0) break;
            //获取余数
            int remaindar = num % 2;
            //倒着拼接
            sb.insert(0,remaindar);
            //除以2
            num = num / 2;
        }
        return sb.toString();
    }

练习4 算法水题:

请使用代码实现计算你活了多少天,用JDK7和JDK8两种方法实现

java 复制代码
public static void main(String[] args) throws ParseException {
        //请使用代码实现计算你活了多少天,用JDK7和JDK8两种方法实现
        //JDK7
        //规则:只要对时间进行计算或者判断,都需要先获取当前时间的毫秒值
        //0.计算出生年月日的毫秒值
        String birthday = "2002年4月11日";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = sdf.parse(birthday);
        long birthdaytime = date.getTime();

        //1.获取当前时间的毫秒值
        long todayTime = System.currentTimeMillis();

        //2.计算间隔多少天
        long time = todayTime - birthdaytime;
        System.out.println(time / 1000 / 60 / 60 / 24 + "天");

        //--------------------------
        //JDK8
        LocalDate d1 = LocalDate.of(2002, 4, 11);
        LocalDate d2 = LocalDate.now();

        long days = ChronoUnit.DAYS.between(d1, d2);
        System.out.println(days + "天");
    }

练习5 算法水题:

判断任意的一个年份是闰年还是平年

要求:用JDK7和JDK8两种方式判断

提示:

  • 二月有29天是闰年
  • 一年又366天是闰年
java 复制代码
public static void main(String[] args) {
        /*判断任意的一个年份是闰年还是平年
        要求:用JDK7和JDK8两种方式判断
        提示:
            * 二月有29天是闰年
            * 一年又366天是闰年*/
        
        //JDK7
        //方法1:
        JDK7Method1();

        //方法2:
        JDK7Method2();
        
        //JDK8
        //方法1:
        JDK8Method1();

        //方法2:
        //把时间设置为2000年3月1日
        LocalDate ld = LocalDate.of(2000, 3, 1);

        //true:闰年  false:平年
        boolean result = ld.isLeapYear();
        System.out.println(result);
        if (result){
            System.out.println(ld.getYear() + "年是闰年!");
        }else {
            System.out.println(ld.getYear() + "年是平年!");
        }
    }

    private static void JDK8Method1() {
        //把时间设置为2000年3月1日
        LocalDate ld = LocalDate.of(2000, 3, 1);
        //再把日历往前减一天
        LocalDate ld2 = ld.minusDays(1);
        //看当前的时间是28号还是29号?
        int dayOfMonth = ld2.getDayOfMonth();
        System.out.println(dayOfMonth);
        if (dayOfMonth==29){
            System.out.println(ld2.getYear() + "年是闰年!");
        }else {
            System.out.println(ld2.getYear() + "年是平年!");
        }
    }

    private static void JDK7Method2() {
        /*简化2:
         * 我们可以把时间设置为2001年1月1日*/
        Calendar c = Calendar.getInstance();
        c.set(2001,0,1);
        //再把日历往前减一天
        c.add(Calendar.DAY_OF_MONTH, -1);
        //看当前的时间是有366天还是365天
        int dayofYear = c.get(Calendar.DAY_OF_YEAR);
        System.out.println(dayofYear);
        if (dayofYear==366){
            System.out.println(c.get(Calendar.YEAR) + "年是闰年!");
        }else {
            System.out.println(c.get(Calendar.YEAR) + "年是平年!");
        }
    }

    private static void JDK7Method1() {
        /*简化1:
        * 我们可以把时间设置为2000年3月1日*/
        Calendar c = Calendar.getInstance();
        c.set(2000,2,1);
        //再把日历往前减一天
        c.add(Calendar.DAY_OF_MONTH,-1);
        //看当前的时间是28号还是29号?
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
        if (day==29){
            System.out.println(c.get(Calendar.YEAR) + "年是闰年!");
        }else {
            System.out.println(c.get(Calendar.YEAR) + "年是平年!");
        }
    }
相关推荐
Chester_19995 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲6 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员6 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导7 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan7 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_695251497 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
2601_961901707 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..8 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
大衛說8 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
QQ_21696290968 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端