Java中数组的插入、查找、指定位置存放、覆盖

一、什么数组?

示例:数组是用来存放相同类型的数据的一类集合

二、储存空间(栈空间和堆空间)

在这里插入图片描述

三、代码以及效果图

1.利用数组来求最大值和最小值

案例:从键盘接受10个整数,求出其中的最大值和最小值。
代码如下(示例):

import java.util.Scanner;

public class Work1 {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入十个数字:");
        int[] arr =new int[10];
        for (int a = 0; a <arr.length ; a++) {
    
    
            arr[a]=sc.nextInt();
        }
        int  max=arr[0];
        int  min=arr[0];
        for (int i = 1; i <arr.length ; i++) {
    
    
            if (max<=arr[i]){
    
    
                max=arr[i];
            }
        }
        for (int j = 1; j <arr.length ; j++) {
    
    
            if (min>=arr[j]){
    
    
                min=arr[j];
            }
        }
        System.out.println("最大值为:"+max);
        System.out.println("最小值为:"+min);
    }
}

在这里插入图片描述

2.数组中元素的查找

案例:输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”
代码如下(示例):

import java.util.Scanner;

public class Work2 {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入10个数:");
        int[] arr=new int[10];
        for (int i = 0; i <arr.length ; i++) {
    
    
            arr[i]=sc.nextInt();
        }
        System.out.println("请输入你想查找的数:");
        int number = sc.nextInt();
        boolean isnumber=false;
        for (int j = 0; j <arr.length ; j++) {
    
    
            if (arr[j]==number){
    
    
                System.out.println("该数处于数组中第"+(j+1)+"个位置");
                isnumber=true;
            }
        }
        if (isnumber==false){
    
    
            System.out.println("找不到");
        }
    }
}

在这里插入图片描述

3.数组中数据的输入存放

案例:输入10个数据存放到数组中,并输出数组
代码如下(示例):

import java.util.Arrays;
import java.util.Scanner;

public class Work2 {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入10个数:");
        int[] arr=new int[10];
        for (int i = 0; i <arr.length ; i++) {
    
    
            arr[i]=sc.nextInt();
        }
        System.out.println(Arrays.toString(arr));

在这里插入图片描述

4.数组中根据输入数据大小输出存放下标的位置

案例:定义一个有序数列{1,5,20,30,80},要求用户输入一个数字,判断该数字应该插入到数组中的下标是?
代码如下(示例):

import java.util.Scanner;
public class Work7 {
    
    
    public static void main(String[] args) {
    
    
        int[] arr={
    
    1,5,20,30,80};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int number = sc.nextInt();
        //找到第一个比number大的数
        for (int i = 0; i< arr.length; i++) {
    
    
            if (arr[i]>number){
    
    
                System.out.println("该数应该插入的下标是:"+i);
                break;
            }
        }
    }
}

在这里插入图片描述

5.数组中元素指定位置往后覆盖

案例:定义一个长度为8的数组,要求前7个元素赋值,最后一个不赋值,从第5个元素开始,依次覆盖后面的元素,并输出最终结果。
代码如下(示例):

package work1;

import java.util.Scanner;
public class Work8 {
    
    
    public static void main(String[] args) {
    
    
        fun1();
        fun();
    }
    //方法1
    private static void fun1() {
    
    
        int [] arr={
    
    10,20,30,40,50,60,70,0};
        // i 第五个元素的下标为4 最后一个数的下标为len-1    len-2赋值给len-1  len3赋值给len-2   下标4赋值给下标5
        for (int i = arr.length-2; i >= 4; i--) {
    
    
            arr[i+1]=arr[i];
        }
        //输出数组
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.println(arr[i]+" ");
        }
    }
    //方法2
    private static void fun() {
    
    
        int[] arr=new int[8];
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入七个数值:");
        for (int i = 0; i <arr.length-1 ; i++) {
    
    
            arr[i]=sc.nextInt();
        }
        for (int j = arr.length-1; j >=5 ; j--) {
    
    
            arr[j]=arr[j-1];
        }
        for (int a:arr){
    
    
            System.out.print(a+"\t");
        }
    }
}

在这里插入图片描述
在这里插入图片描述

6.数组中在指定位置插入指定值

代码如下(示例):

package work1;

import java.util.Arrays;
import java.util.Scanner;
//.定义一个有序数列,{1,5,20,30,80},
// 要求用户输入一个数字,然后插到数组中,并保持升序,不能使用冒泡排序。
public class Work9 {
    
    
    public static void main(String[] args) {
    
    
        fun2();
        fun();

    }
    //方法一:
    private static void fun2() {
    
    
        int [] arr={
    
    10,20,30,40,50,60,70,0};
        int x=50;//插入的数字值
        //1.找到应该插入的下标index;
        int index=arr.length-1;//默认值就是最后一个,找第一个比x大的下标
        for (int i = 0; i < arr.length; i++) {
    
    
            if (arr[i]>x){
    
    
                index=i;
                break;
            }
        }
        System.out.println(index);
        //2.从index开始,依次向后移位
        for (int i = arr.length-2; i >=index ; i--) {
    
    
            arr[i+1]=arr[i];
        }
        //3.用x替换arr[index]
        arr[index]=x;
        //输出数组
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+" ");
        }
    }
    //方法2
    private static void fun() {
    
    
        int[] arr={
    
    1,5,20,30,80};
        int[] arr1=new int[6];
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要插入的数字:");
        int number = sc.nextInt();
        for (int i = 0; i <arr.length ; i++) {
    
    
            arr1[i]=arr[i];
        }
        int xia=arr1.length-1;
        for (int a = arr.length-1; a >=0 ; a--) {
    
    
            if (arr[a]>number){
    
    
                xia=a;
            }
        }
        for (int b = xia; b <arr.length ; b++) {
    
    
            arr1[b+1]=arr[b];
        }
        arr1[xia]=number;
        arr=arr1;
        System.out.println(Arrays.toString(arr));
    }
}


在这里插入图片描述
在这里插入图片描述

7.数组中数组元素的逆向输出

案例:3.将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换……,例如:原数组为:9 2 5 7 8,逆序后的数组为:8 7 5 2 9
代码如下(示例):

package work1;

import java.util.Scanner;
public class Work3 {
    
    
    public static void main(String[] args) {
    
    
        int[] arr=new int[5];
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入5个数组成原数组:");
        for (int i = 0; i <arr.length ; i++) {
    
    
            arr[i]=sc.nextInt();
        }
        int a=0;
        for (int j = 0; j <arr.length/2; j++) {
    
    
            a=arr[j];
            arr[j]=arr[4-j];
            arr[4-j]=a;
        }
        System.out.println("逆序后的新数组为:");
        for (int b:arr){
    
    
            System.out.print(b+"\t");
        }
    }
}

在这里插入图片描述

总结

以上就是数组应用方面的内容,主要是数组的最大值、最小值、指定位置插入元素、元素的往后覆盖等知识。

猜你喜欢

转载自blog.csdn.net/StruggleBamboo/article/details/110621454