十一、常用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) + "年是平年!");
        }
    }
相关推荐
凡人的AI工具箱9 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
陈王卜11 分钟前
django+boostrap实现发布博客权限控制
java·前端·django
小码的头发丝、12 分钟前
Spring Boot 注解
java·spring boot
java亮小白199717 分钟前
Spring循环依赖如何解决的?
java·后端·spring
飞滕人生TYF23 分钟前
java Queue 详解
java·队列
chnming198725 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙26 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂27 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc34 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
程序伍六七38 分钟前
day16
开发语言·c++