java数组工具类(遍历(display)、添加(append)、删除(remove)、查找(indexOf) 、排序(sort))

2023-10-26

设计一个类,用于数组操作。
(1)成员变量为一个一维数组,数组元素是int型。
(2)构造方法中包含以一维数组为参数的构造方法。
(3)成员方法包括数组遍历(display)、添加(append)、删除(remove)、查找(indexOf) 、排序(sort)。
[分析与说明]
(1)数组的遍历运算(display),就是按顺序输出所有数组元素。
(2)数组添加运算(append),是将一个新元素放入数组,要能够执行添加操作,那么数组空间必须有多于元素实际数量,也就是数组length必须大于数组中保存的元素个数。添加操作是把新的数据元素放在最后一个元素之后,这样就需要记录元素的个数,才会找到放新元素的位置,在添加元素后,元素个数记录也会增加1。
(3)数组的删除运算(remove),要按指定的编号(下标)把元素从数组中删除,删除后的元素不存在,当然就不能在遍历运算中显示。所以这个元素删除后,它的位置上不能为空。删除操作可以把最后一个元素移到被删除位置。同时,删除也会使元素个数减少1个。数组的查找(indexOf)运算,要给出指定的数值,在数组元素中一一比较,当数组某元素与其相等时,表示查找成功,可以将此元素索引号(下标)做为结果返回;数组中没有与其相等的元素值时,表示查找失败,用-1做为结果返回。查找运算的查找范围应该在元素中查找,而不是按数组的length来进行查找。所以该运算还需要元素个数这个值。
(4)数组的排序(sort)运算,可以使用排序算法,对已有元素进行排序。(重点)以上运算中都离不开表示元素个数的值,它与所有数组元素的运算有密切关系,做为这些运算公共数据,可以将它设置为类的成员变量,这样,类的所有方法都可以直接访问和操作它,而不需要像C语言那样进行参数传递。

import java.util.Scanner;
public class Test {
    public static void Sorting(int array[]) {//排序
        int i, j, temp;
        for (i = 0; i < array.length - 1; i++) {     // 外层循环控制排序趟数
            for (j = 0; j < array.length - 1; j++) {// 内层循环控制每一趟排序多少次
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        System.out.println("排序后的数组为:");
        for (i = 0; i < array.length; i++)
            System.out.print(array[i] + " ");
    }
    public static void add(int array[]) {//添加
        System.out.println("请输入需要添加的数");
        Scanner sc=new Scanner(System.in);
        int add=sc.nextInt();
        //int add = new Scanner(System.in).nextInt();//我发现了一种新的输入方法,把两个句子合体了
        int[] b = new int[array.length + 1];
        for (int i = 0; i < array.length; i++) {
            b[i] = array[i];
        }
        b[array.length]=add;
        //新数组替换原数组
        array=b;
        for (int i = 0; i < array.length; i++)
            System.out.print(array[i] + " ");
        //System.out.println("插入后的a新数组:"+Arrays.toString(array));//这是另一种输出方式
    }
        public static void output(int array[]) {//遍历
        System.out.println("您输入的数组为:");
        for (int l = 0; l < array.length; l++)System.out.print(array[l] + " ");
    }
    public static void delete(int array[]){//删除
        System.out.println("您需要删除第几个元素?");
        int n = new Scanner(System.in).nextInt();
        int[] newArray = new int[array.length - 1];
        for (int i = 0; i < newArray.length; i++) {
            if (i < n - 1) {
                newArray[i] = array[i];
           } else {
                newArray[i] = array[i + 1];
            }
        }
        array = newArray;
        for (int i = 0; i < array.length; i++) System.out.print(array[i] + " ");
        //System.out.println("删除第" + n + "个元素后为" + Arrays.toString(array));//这种数组输出方式是[数组元素1, 数组元素2, ......]
    }
    public static void find(int array[]) {//查找
        System.out.println("您要查找那个数?");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        printArray(array, n);//引用查找子方法
    }
    private static void printArray(int[] array, int a) {//查找子方法
        for (int i = 0; i <array.length; i++) {//如果找到,就输出这个数,否则不输出
            if (array[i] == a) {
                System.out.println("这个数是第" + i+ "个数");//从0开始数
            }
        }
    }
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入元素个数");
        int n=sc.nextInt();
        System.out.println("请输入数组");
        int array[]=new int[n];
        for(int i=0;i<n;i++)
        array[i]=sc.nextInt();
        System.out.println("请选择功能编号");
        System.out.println("1.排序");
        System.out.println("2.遍历");
        System.out.println("3.删除");
        System.out.println("4.添加");
        System.out.println("5.查找");
        int function=sc.nextInt();
        switch (function) {
            case 1:
                Sorting(array);
                break;
            case 2:
                output(array);
                break;
            case 3:
                delete(array);
                break;
            case 4:
                add(array);
                break;
            case 5:
                find(array);
                break;
            default:break;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java数组工具类(遍历(display)、添加(append)、删除(remove)、查找(indexOf) 、排序(sort)) 的相关文章

随机推荐

  • 在Windows10下使用GPU安装TensorFlow

    1 安装Python和pip 在Windows环境安装Python 3 x版本 通常安装包中集成了pip工具 安装会非常简单方便 具体见 https www python org downloads windows 按以上网站的信息 获取到
  • tomcat端口号被占用

    这里有两种方法 第一个是通过命令窗口终止 第二个是使用任务管理器 1 端口被占用 可以用cmd window R 第一步 输入netstat ano 找到被占用的端口号 netstat ano 也可以输入netstat aon findst
  • matlab和stata,Stata和Matlab联合处理金融数据

    Stata是统计学专业软件 可以很方便的对数据处理 但几乎只能按照整行整列进行 而且每次只能加载一个矩阵 dta文件 如果要用到多个矩阵数据进行操作或进行复杂的循环控制 就力不从心了 而Matlab工业界广泛使用的数据分析处理工具 对矩阵支
  • 8、OpenCV调整图像对比度和亮度

    OpenCV调整图像对比度和亮度 一 学习目标 二 原理理解 三 对比度 亮度调整 四 完整代码示例 一 学习目标 理解图像对比度和亮度调整的原理 对比三种不同亮度和对比度调整方法 二 原理理解 1 对比度 对比度指的是一幅图像中明暗区域最
  • docker启动命令,docker重启命令,docker关闭命令

    一 docker服务的命令 启动 systemctl start docker 守护进程重启 systemctl daemon reload 重启docker服务 systemctl restart docker service docke
  • VS2019智能感知、代码折叠超慢问题解决实例

    CUDA Nsight VS 插件引起的智能感知问题解决 今天使用VS2019的时候 发现智能感知 代码折叠都莫名的慢 也不是一点都不会来 就是超慢 感觉要10秒以上才会显示 点个点需要等上好久才会出来 怎么重置都没用 换新用户也没用 想想
  • eclipse打开new新建没有java project

    自己通过上网学习安装了eclipse 在安装和使用过程中遇到的问题及解决办法会进行记录 希望可以帮助跟我遇到相同问题的你们哦 这些解决办法 也是我百度找到的 分享给大家 我的eclipse之前已经装过了 昨天在学习接口测试要用到eclips
  • ELK通过logstash采集java日志(多图演示)

    ELK 不是一款软件 而是 Elasticsearch Logstash 和 Kibana 三种软件产品的首字母缩写 这三者都是开源软件 通常配合使用 而且又先后归于 Elastic co 公司名下 所以被简称为 ELK Stack 根据
  • 大牛总结超详细的RabbitMQ入门,看这篇文章就够了!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情提示 二 ack机制回顾 三 ack机制实现原理 delivery tag 四 RabbitMQ如何感知仓储服务实例宕机 五 仓储服务处理失败时的消息重
  • VS异常:文件乱码:文件加载,使用Unicode(UTF-8)编码加载文件xxx时,有些字节已用Unicode替换字符替换。保存该文件将不会保留原始文件内容。

    参考 https blog csdn net bugang4663 article details 110408633 今天在使用vs打开一个项目的时候发现部分文件突然乱码了 上午打开的时候还没发现 点击部分cs文件的时候出现下面异常提醒
  • SD卡两种操作模式在项目中应用的比较

    1 SDIO接口传输速度比SPI接口传输速度快 2 STM32的SDIO口还真的不好用 特别是4BIT的方式 我都纠结了好久了 用1BIT的方式倒是可以 速度大概可以到读2M字节每秒 STM32F205 SDIO DMA 因为项目要最低5M
  • linux入门系列11--Centos7网络服务管理

    通过前面文章的学习已经掌握了Linux系统配置管理的知识 本文讲解Centos7网络配置知识 Linux要对外提供服务 需要保证网络通信正常 因此需要正确配置网络参数 本文将讲解如何使用Network Manager配置网络参数 管理网络会
  • 短视频dy(某音)高版本最新最全4种抓包方案,第1种让你秒破QUIC协议,破解抓包难题,看我这一篇就够了!

    一 前言 一般大多数网站 APP最常用的是http https协议 而某两款最火的短视频dy 某音 ks 某手 最新版使用的是quic协议 见附录1 导致fiddler和charles无法直接抓到包 某音app 13 5版本以下可以直接抓到
  • Hive性能调优策略

    利用分区表优化 场景 在业务环境中 以某个字段为筛选条件的需求增加 解决方法 建立以这个字段为分区的分区表 这样进行查询时只需要指定这个分区就不再需要进行全表扫描 利用分桶表优化 场景 需要频繁进行采样 解决方法 分桶表会使用hash算法将
  • matlab 层次聚类

    MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法 1 层次聚类 hierarchical clustering 2 k means聚类 这里用最简单的实例说明以下层次聚类原理和应用发法 层次聚类是基于距离的聚类方法 MAT
  • Mysql最大连接数,TimeOut配置

    Mysql连接数配置 1 MySQL的max connections参数用来设置最大连接 用户 数 每个连接MySQL的用户均算作一个连接 max connections的默认值为100左右 1 1查看数据库配置的最大连接数 show va
  • java核心技术卷 之单选按钮

    在前一个例子中 对于两个复选框 用户既可以选择一个 两个 也可以两个都不选 在很多情况下 我们需要用户只选择几个选项当中的 一个 与用户选择另一项的时候 前一项就自动地取消选择 这样一组选框通常称为单选按钮组 Radio Button Gr
  • 关于mapper接口注入spring容器

    mapper是接口 而接口时不能注入spring容器的 要注入就需要接口有对应的实现类 注入的应该是实现类而不是接口 而在spring中 导入MyBatis Spring包之后 MyBatis Spring中间件把mapper接口和mapp
  • 新文件创建inode分配路径

    0 ext4 new inode handle 0x0
  • java数组工具类(遍历(display)、添加(append)、删除(remove)、查找(indexOf) 、排序(sort))

    设计一个类 用于数组操作 1 成员变量为一个一维数组 数组元素是int型 2 构造方法中包含以一维数组为参数的构造方法 3 成员方法包括数组遍历 display 添加 append 删除 remove 查找 indexOf 排序 sort