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


相关文章
|
2天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
16天前
|
XML 安全 Java
Java反射机制:解锁代码的无限可能
Java 反射(Reflection)是Java 的特征之一,它允许程序在运行时动态地访问和操作类的信息,包括类的属性、方法和构造函数。 反射机制能够使程序具备更大的灵活性和扩展性
25 5
Java反射机制:解锁代码的无限可能
|
12天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
42 3
|
18天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
50 10
|
13天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
12天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
14天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
31 2
|
15天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
10 2
|
20天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
28 6
|
21天前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
31 4