Java之包装类的算法小题的练习

news2024/9/27 17:31:29

算法小题

练习一:

需求:

键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。

代码示例:

public class Test1 {
    public static void main(String[] args) {
        /*
            键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。
        */
        //1.创建一个集合用来添加整数
        ArrayList<Integer> list = new ArrayList<>();
        //2.键盘录入数据添加到集合中
        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;
        }
    }
​
}
​
​
    private static int getSum(ArrayList<Integer> list) {
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            //i :索引
            //list.get(i);
            int num = list.get(i);
            sum = sum + num;//+=
        }
        return sum;
    }
}

练习二:

需求:

自己实现parseInt方法的效果,将字符串形式的数据转成整数。要求:字符串中只能是数字不能有其他字符最少一位,最多10位 0不能开头

代码示例:

public class Test2 {
    public static void main(String[] args) {
        /*
            自己实现parseInt方法的效果,将字符串形式的数据转成整数。要求:
            字符串中只能是数字不能有其他字符最少一位,最多10位日不能开头
        */
​
        //1.定义一个字符串
        String str = "123";
        //2.校验字符串
        //习惯:会先把异常数据进行过滤,剩下来就是正常的数据。
        if (!str.matches("[1-9]\\d{0,9}")) {
            //错误的数据
            System.out.println("数据格式有误");
        } else {
            //正确的数据
            System.out.println("数据格式正确");
            //3.定义一个变量表示最终的结果
            int number = 0;
            //4.遍历字符串得到里面的每一个字符
            for (int i = 0; i < str.length(); i++) {
                int c = str.charAt(i) - '0';//把每一位数字放到number当中
                number = number * 10 + c;
            }
            System.out.println(number);
            System.out.println(number + 1);
        }
    }
}

练习三:

需求:

package com.itheima.a04test;
​
public class Test3 {
    public static void main(String[] args) {
        /*
​
            定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
​
         */
    }
​
​
    public static String tobinarystring(int number) {//6
        //核心逻辑:
        //不断的去除以2,得到余数,一直到商为日就结束。
        //还需要把余数倒着拼接起来
​
        //定义一个StringBuilder用来拼接余数
        StringBuilder sb = new StringBuilder();
        //利用循环不断的除以2获取余数
        while (true) {
            if (number == 0) {
                break;
            }
            //获取余数 %
            int remaindar = number % 2;//倒着拼接
            sb.insert(0, remaindar);
            //除以2 /
            number = number / 2;
        }
        return sb.toString();
    }
}

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

代码示例:

练习四:

需求:

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

代码示例:

public class Test4 {
    public static void main(String[] args) throws ParseException {
        //请使用代码实现计算你活了多少天,用JDK7和JDK8两种方式完成
        //JDK7
        //规则:只要对时间进行计算或者判断,都需要先获取当前时间的毫秒值
        //1.计算出生年月日的毫秒值
        String birthday = "2000年1月1日";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = sdf.parse(birthday);
        long birthdayTime = date.getTime();
        //2.获取当前时间的毫秒值
        long todayTime = System.currentTimeMillis();
        //3.计算间隔多少天
        long time = todayTime - birthdayTime;
        System.out.println(time / 1000 / 60 / 60 / 24);
​
​
        //JDK8
        LocalDate ld1 = LocalDate.of(2000, 1, 1);
        LocalDate ld2 = LocalDate.now();
        long days = ChronoUnit.DAYS.between(ld1, ld2);
        System.out.println(days);
    }
}

练习五:

需求:

判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:二月有29天是闰年一年有366天是闰年

代码示例:

public class Test5 {
    public static void main(String[] args) {
        /*
            判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:
            二月有29天是闰年一年有366天是闰年
        */
​
        //jdk7
        //我们可以把时间设置为2000年3月1日
        Calendar c = Calendar.getInstance();
        c.set(2000, 2, 1);
        //月份的范围:0~11
        //再把日历往前减一天
        c.add(Calendar.DAY_OF_MONTH, -1);
        //看当前的时间是28号还是29号?
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
​
​
        //jdk8
        //月份的范围:1~12
        //设定时间为2000年的3月1日
        LocalDate ld = LocalDate.of(2001, 3, 1);
        //把时间往前减一天
        LocalDate ld2 = ld.minusDays(1);
        //获取这一天是一个月中的几号
        int day2 = ld2.getDayOfMonth();
        System.out.println(day2);
​
        //true:闰年
        //false:平年
        System.out.println(ld.isLeapYear());
    }
}

1.2 动图演示

1.3 代码示例

public class A01_BubbleDemo {
    public static void main(String[] args) {
        /*
            冒泡排序:
            核心思想:
            1,相邻的元素两两比较,大的放右边,小的放左边。
            2,第一轮比较完毕之后,最大值就已经确定,第二轮可以少循环一次,后面以此类推。
            3,如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以。
        */
​
​
        //1.定义数组
        int[] arr = {2, 4, 5, 3, 1};
​
        //2.利用冒泡排序将数组中的数据变成 1 2 3 4 5
​
        //外循环:表示我要执行多少轮。 如果有n个数据,那么执行n - 1 轮
        for (int i = 0; i < arr.length - 1; i++) {
            //内循环:每一轮中我如何比较数据并找到当前的最大值
            //-1:为了防止索引越界
            //-i:提高效率,每一轮执行的次数应该比上一轮少一次。
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //i 依次表示数组中的每一个索引:0 1 2 3 4
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
​
        printArr(arr);
​
​
​
​
    }
​
    private static void printArr(int[] arr) {
        //3.遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/985088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产业大数据应用:洞察区域产业实况,把握区域经济脉搏

​ 随着新一代信息技术的崛起&#xff0c;我们进入了大数据时代。在这个时代&#xff0c;数据作为基本生产要素不仅改变着我们的日常生活&#xff0c;更是在区域产业经济发展中扮演着重要角色&#xff0c;它赋予了政府、企业和投资者敏锐的洞察力。 一、摸清区域经济现状 基于…

智慧公厕如何实现系统管理、运行数据、业务流程的高度耦合

随着城市发展和人口增长&#xff0c;公共厕所成为城市更新与发展的重要环节。然而&#xff0c;传统的公共厕所管理方式面临诸多问题&#xff0c;如运营成本高、环境污染、人员管理等。为了解决这些问题&#xff0c;智慧公厕应运而生。智慧公厕是指利用现代科技手段&#xff0c;…

RPC接口测试-两种方法(Jmeter和代码)

相信很多同学在测试RPC接口时会遇到很多困难&#xff0c;博主前段时间在测试时也一样&#xff0c;算是提前踩坑啦&#xff0c;下面就来介绍一下测试RPC接口的方法 1.什么是RPC接口 RPC&#xff08;Remote Procedure Call&#xff09;是一种通信协议和模式&#xff0c;用于在分…

Linux之权限

目录 一、shell运行原理 二、权限 1、对人操作 2、对角色和文件操作 修改权限&#xff08;改属性&#xff09;&#xff1a; ①ugo- ②二进制数的表示 修改权限&#xff08;改人&#xff09;&#xff1a; 三、权限的相关问题 1、目录的权限 2、umask 3、粘滞位 一、s…

一百七十一、Flume——Flume1.9.0单机版安装(亲测有效)

一、目的 以防万一&#xff0c;为了避免kettle从Kafka同步数据到HDFS有问题&#xff0c;因此也测试了用Flume去采集Kafka中的数据然后同步到HDFS&#xff0c;算是一套备用方案 二、安装包版本 &#xff08;一&#xff09;Hadoop版本 hadoop-3.1.3.tar.gz &#xff08;二&a…

JS中执行上下文和执行栈是什么?

一&#xff1a;执行上下文 执行上下文是一种对js执行代码的环境的一种抽象&#xff0c;只要js在执行中&#xff0c;那它一定是运行在执行上下文中 执行上下文的类型 全局执行上下文&#xff1a;全局执行上下文是在程序启动时创建的&#xff0c;它包含全局范围定义的变量和函数…

UltraISO做u盘镜像启动盘

1、工具—刻录光盘映像 2、刻录机选择盘 选择centos镜像 刻录

索尼 toio™应用创意开发征文|一步两步三步模拟浇花系统

目录 1.toio™介绍 2、创意分析 2.1 创意设计 2.2 创意落地 3、创意实现 3.1 环境安装 3.2 核心玩法 总结 1.toio™介绍 索尼的toio™是一款启发创意的机器人产品&#xff0c;旨在通过与真实世界的互动&#xff0c;为各年龄段的用户提供娱乐体验。这款产品具有高度的灵…

【已解决】pyqt5的打包exe软件图标菜单栏/任务栏/小图标/窗口图标未显示

1.起因&#xff1a; 希望&#xff1a;pyqt5 项目&#xff0c;pyinstaller main.spec 打包&#xff0c;我想要 main.exe 就像一个普通的应用软件一样显示我自定义的图标。 结果&#xff1a; main.exe 左侧图标还是老土的样子&#xff0c;并没有成为我的图标。独立运行是&#…

API接口与电商平台之间的联系,采集京东平台数据按关键字搜索商品接口示例

关键字搜索商品的重要性&#xff1a; 1.引入精准流量 关键词第一个也是最重要的作用就是为我们宝贝引进精准的流量&#xff0c;这一作用无论是在自然搜索中还是直通车中都是一样的。 第一步关乎的是我们宝贝的展现&#xff0c;而第二步用户是否会点进我们的宝贝&#xff0c;…

爬虫爬取mp3文件例子

相信训练模型时数据集的获取也是一个很头疼的事情&#xff0c;搞cv领域的可以扛着摄像头架起三脚架拍摄获取&#xff08;以前干过&#xff09;&#xff0c;但是如果是nlp领域的呢&#xff0c;特别是chatgpt等大模型出来后对这类文本等数据的需求更大&#xff0c;如果没有现成的…

攻防世界-WEB-Web_php_include

打开靶机 通过代码审计可以知道&#xff0c;存在文件包含漏洞&#xff0c;并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下&#xff1a; 这两个都为on 所以我们就可以使用data://伪协议 payload如下&#xff1a; - ?pagedata://text/plain,…

测试可用的淘宝API(商品详情数据、买家信息、卖家信息、店铺信息、订单信息)

什么是API? API全称Application Programming Interface&#xff0c;即应用程序编程接口&#xff0c;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定&#xff0c;用于传输数据和指令&#xff0c;使应用程序之间可以集成和共享数据资源。 简单来说&#…

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

数据库管理系统&#xff08;数据库软件&#xff09;功能非常多&#xff0c;不仅仅是存储数据&#xff0c;还要包含&#xff1a;数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言&#xff0c;基于功能&#xff0c;划分为4类&#xff1a; 1、数据定…

64位Office API声明语句第110讲

【分享成果&#xff0c;随喜正能量】以大慈为所住&#xff0c;给一切众生快乐&#xff0c;观众生心与菩萨心平等平等。以大悲为住处&#xff0c;不轻末学&#xff0c;善根成熟了他会发心&#xff0c;将来也能成佛。舍有为而不执著无为&#xff0c;住无为而不舍有为&#xff0c;…

正方实践系统打卡

Use HTTP (已完成) &#x1f4dc; 使用指南 &#x1f6d6; 项目结构 log 日志文件 use 使用情况 (待) data.py 数据 log.py 日志 main.py 主函数 只需要修改data.py文件内容即可&#xff1a; header ——> 头文件 User-AgentCookieAccept user ——> 用户信息 ZFT…

Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录 一、消费者组详细消费流程图解二、消费者的重要参数 一、消费者组详细消费流程图解 创建一个消费者网络连接客户端&#xff0c;主要用于与kafka集群进行交互&#xff0c;如下图所示&#xff1a; 调用sendFetches发送消费请求&#xff0c;如下图所示&#xff1a; (1)、Fet…

RabbitMQ: Routing结构

生产者 package com.qf.mq2302.routing;import com.qf.mq2302.utils.MQUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;public class EmitLog {public static final String EXCHANGE_NAME"emitlogs";public static void main(…

基于Jmeter和Jenkins搭建性能测试框架

搭建这个性能测试框架是希望能够让每个人&#xff08;开发人员、测试人员&#xff09;都能快速的进行性能测试&#xff0c;而不需要关注性能测试环境搭建过程。因为&#xff0c;往往配置一个性能环境可能需要很长的时间。 1、性能测试流程 该性能测试框架工作的流程主要有&am…

【代码随想录】dfs和bfs (所有可能的路径、岛屿数量)

所有可能的路径&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution { public:vector<int> path;vector<vector<int>> result;void dfs(vector<vector<int>> graph, int x){//1 确认递归函数…