8、Java——一维数组案例代码详解

简介: 8、Java——一维数组案例代码详解

案例一

       排序:对10个整数进行按照从小到大的顺序排序


       思路分析:用冒泡排序的方法进行排序

5.png



       代码展示:


public static void main(String[] args) {
  //对10个整数进行按照从小到大的顺序排序
  // 定义10个整数的数组
  int[] nums={42,35,64,78,39,26,89,21,97,17};
  for (int i = 0; i < nums.length-1; i++) {
    for (int j = 0; j < nums.length-1-i; j++) {
    if(nums[j]>nums[j+1]){
      int temp=nums[j];
      nums[j]=nums[j+1];
      nums[j+1]=temp;
    }
    }
  }
  System.out.println("按照从小到大的顺序排序:");
  System.out.print("int[] nums={");
  for (int i = 0; i < nums.length; i++) {
    if(i==nums.length-1){
    System.out.print(nums[i]);
    }else{
    System.out.print(nums[i]+",");
    }
  }
  System.out.println("};");
  }

       运行效果:



1.gif

案例二

       插入数据:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。


       思路分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。


       代码展示:


public static void main(String[] args) {
  //创建Scanner类对象
  Scanner sc=new Scanner(System.in);
  int[] scores={99,85,83,63,60};
  //1)声明一个长度比原来数组长度大1的数组
  int[] newScores=new int[scores.length+1];
  //2)将原来数组里元素按照顺序存入到新的数组中
  for (int i = 0; i < scores.length; i++) {
    newScores[i]=scores[i];
  }
  System.out.println("插入学生成绩前的数组:");
  for (int i : newScores) {
    System.out.print(i+" ");
  }
  System.out.println();
  //3)使用Scanner类获取你要增加的学员成绩
  System.out.println("请输入你要增加的学员成绩:");
  int insert =sc.nextInt();
  //设置插入的成绩插入的位置,默认将其插入在数组最后位置
  int index=newScores.length-1;
  //4)通过循环比较获取增加的学员成绩的插入位置
  for (int i = 0; i < newScores.length; i++) {
    if (insert>newScores[i]) {
    index=i;
    break;
    }
  }
  //5)从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动)
  for (int i = newScores.length-1; i < index; i--) {
    newScores[i]=newScores[i-1];
  }
  //6)将要插入的成绩存储到插入位置
  newScores[index]=insert;
  //输出新数组所有元素
  System.out.println("插入学生成绩后的数组:");
  for (int i : newScores) {
    System.out.print(i+" ");
  }
  }

       运行效果:

1.gif

案例三

       逆序:将一个数组逆序输出。


       思路分析:定义一个新的数组,长度和原数组长度相同


       代码展示:


public static void main(String[] args) {
  int[] nums={24,53,45,67,38,18,86,46,75};
  System.out.print("原始数组为:int[] nums={");
  for (int i = 0; i < nums.length; i++) {
    if (i==nums.length-1) {
    System.out.print(nums[i]);
    }
    else{
    System.out.print(nums[i]+",");
    }
  }
  System.out.println("};");
  //定义一个新的数组,个数和nums数组个数相同
  int[] newNums=new int[nums.length];
  System.out.println("数组逆序后:int[] newNums={");
  for (int i = 0; i < nums.length; i++) {
    newNums[i]=nums[nums.length-i-1];
    if (i==newNums.length-1) {
    System.out.print(newNums[i]);
    }
    else{
    System.out.print(newNums[i]+",");
    }
  }
  System.out.println("};");
  }

       运行效果:

2.png

案例四

       元素交换:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。


       思路分析:把最大和最小取出来,剩下的数据放在一个数组里,然后定义一个新数组,和原数组长度一样,新数组的第一个和最后一个是最大值和最小值,直接放进去,刚才的那个剩下的数据按照顺序放在新数组的中间


       代码展示:


public static void main(String[] args) {
        int[] nums={24,53,45,67,38,18,86,46,75};
  //打印输出原始数组
  System.out.print("原始数组为:int[] nums={");
  for (int i = 0; i < nums.length; i++) {
    if (i==nums.length-1) {
    System.out.print(nums[i]);
    }
    else{
    System.out.print(nums[i]+",");
    }
  }
  System.out.println("};");
  //获取最大数
  int max=nums[0];
  for (int i = 1; i < nums.length; i++) {
    if(nums[i]>max){
    max=nums[i];
    }
  }
  //获取最小数
  int min=nums[nums.length-1];
  for (int i = nums.length-1; i > 0; i--) {
    if(nums[i]
    min=nums[i];
    }
  }
  //定义一个排除最大数和最小数的数组
  int j = 0;
  int[] numOthers=new int[nums.length-1];
  for (int i = 0; i < nums.length; i++) {
    if(nums[i]!=max&&nums[i]!=min){
    numOthers[j]=nums[i];
    j++;
    }
  }
  //打印输出交换后的数组
  //定义一个新的数组,个数和nums数组个数相同
  int[] newNums=new int[nums.length];
  System.out.print("交换后的数组为:int[] newNums={");
  for (int i = 0; i < nums.length; i++) {
    if (i==nums.length-1) {
    newNums[i]=min;
    System.out.print(newNums[i]);
    }else if(i==0){
    newNums[i]=max;
    System.out.print(newNums[i]+",");
    }
    else{
    newNums[i]=numOthers[i-1];
    System.out.print(newNums[i]+",");
    }
  }
  System.out.println("};");
  }


       运行效果:

1.gif

案例五


       移动:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数


       思路分析:前面各数后移m个位置,最后m个数就变成前面m个数,说明是将后面m个数放在数组的最前面

        * 例如:原数组{24,53,45,67,38,18,86,46,75}


        * 将nums数组中的后三位放在前面,在新的数组则为:

        *             {86,46,75,24,53,45,67,38,18}


       代码展示:


public static void main(String[] args) {
  //有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
  //定义一个Scanner键盘输入对象
  Scanner sc=new Scanner(System.in);
  //定义一个数组
  int[] nums={24,53,45,67,38,18,86,46,75};
  //打印输出原始数组
  System.out.print("原始数组为:int[] nums={");
  for (int i = 0; i < nums.length; i++) {
    if (i==nums.length-1) {
    System.out.print(nums[i]);
    }
    else{
    System.out.print(nums[i]+",");
    }
  }
  System.out.println("};");
  System.out.println("请输入数组后面的几个数放在最前面:");
  int court=sc.nextInt();
  //定义一个新的数组
  int[] newNums=new int[nums.length];
  for (int i = 0; i < newNums.length; i++) {
    if (i
    newNums[i]=nums[nums.length-court+i];
    }
    else
    {
    newNums[i]=nums[i-court];
    }
  }
  //打印输出新的数组
    System.out.print("新的数组为:int[] newNums={");
    for (int i = 0; i < newNums.length; i++) {
      if (i==newNums.length-1) {
      System.out.print(newNums[i]);
      }
      else{
      System.out.print(newNums[i]+",");
      }
    }
    System.out.println("};");
  }


       运行效果:


 2.png


相关文章
|
8天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
152 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
30天前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
64 12
|
1月前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
1月前
|
存储 Java 索引
Java基础(六):数组
Java基础(六):数组
32 10
Java基础(六):数组
|
1月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
272 11
|
1月前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
1月前
|
存储 监控 Java
JAVA线程池有哪些队列? 以及它们的适用场景案例
不同的线程池队列有着各自的特点和适用场景,在实际使用线程池时,需要根据具体的业务需求、系统资源状况以及对任务执行顺序、响应时间等方面的要求,合理选择相应的队列来构建线程池,以实现高效的任务处理。
120 12
|
2月前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
77 3
|
2月前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
78 2
|
2月前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。