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关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
17 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
1天前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
15 6
|
5天前
|
Java 数据处理 开发者
Java中的Lambda表达式:简化你的代码之路
【8月更文挑战第66天】Lambda表达式在Java 8中首次引入,它为Java开发者提供了一种更简洁、更灵活的编程方式。本文将通过简单易懂的语言和实际代码示例,引导你理解Lambda表达式的基本概念、语法结构以及如何在Java项目中应用它来简化代码。无论你是Java新手还是有经验的开发者,这篇文章都将帮助你更好地掌握这一强大的工具。
34 11
|
2天前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
9 2
|
8天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
2天前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
20 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
2天前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
10 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
2天前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
18 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
12天前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
33 5
|
10天前
|
Java 开发者
探索Java中的Lambda表达式:简化你的代码之旅##
【8月更文挑战第62天】 Java 8的发布为开发者带来了诸多新特性,其中最引人注目的无疑是Lambda表达式。这一特性不仅让代码变得更加简洁,还极大地提升了开发的效率。本文将通过实际示例,展示如何利用Lambda表达式来优化我们的代码结构,同时探讨其背后的工作原理和性能考量。 ##