十一、常用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) + "年是平年!");
        }
    }
相关推荐
暮湫7 分钟前
泛型(2)
java
南宫生17 分钟前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石25 分钟前
12/21java基础
java
高山我梦口香糖32 分钟前
[react]searchParams转普通对象
开发语言·前端·javascript
李小白6633 分钟前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp1 小时前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
信号处理学渣1 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客1 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
jasmine s1 小时前
Pandas
开发语言·python
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb