其他分享
首页 > 其他分享> > 2022-07-16 第五小组 孔海波 学习笔记

2022-07-16 第五小组 孔海波 学习笔记

作者:互联网

今日学习情况:掌握
心情:100%(明天放假!!!)
今天学习了关于数组的各种案例,感觉还挺好。

Java基础

            ——数组案例
今天我们来看一看一些数组的案例,加强一下我们对数组以及我们对过去知识的掌握。
案例一

输入下标,输出对应数组的数字

这个题比较简单,我们来分析一下:我们在控制台是输出提示信息,用户输入需要的查询的数组元素的下标。当接受到用户输入的数字后我们首先要判断这个下标是否越界,如果越界我们输出一些提示信息去提示用户,如果下标合法我们就直接输出对应下标的元素。下面就是代码的实现。

import java.util.Scanner;
public class Java02 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] arr = new int[]{9, 61, 3, 9, 61, 5, 35, 4, 68};
        System.out.println("请输入一个下标");
        while (true) {
            int index = in.nextInt();
            if (index > arr.length - 1 || index < 0)
                System.out.println("你输入的数组下标越界!数组最大下标为" + (arr.length - 1) + "请重新输入:");
            else {
                System.out.println("你输入的下标是:" + index + ",a[" + index + "] = " + arr[index]);
                break;
            }
        }
    }
}

下面我们输入两个越界的下标测试一下:

最后我们输入一个合法的下标来试一试。


成功运行。

案例二

将用户的数倒序输入数组
emmm...正常数组都从头开始输入,怎么才能倒序输入呢?我们先看看一下正常输入数组是什么原理:对数组赋值的时候我们通常使用循环,从数组下标为0开始赋值,一直到数组下标为数组长度减一结束。那么逆序输入就是从后面开始输入嘛,也就是从数组下标为数组长度减一开始到数组下表为0结束。我们只要将循环开始的初始值赋为arr.lenth - 1就可以了。然后每次长度就减一,当循环遍量小于0后就结束循环。好了分析就到这里,我们来看一下代码实现:

public class Java03 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] arr = new int[5];
        for (int i = arr.length - 1; i >= 0 ; i--) {
            System.out.println("请输入第"+ (arr.length - i) +"个数:");
            arr[i] = in.nextInt();
        }
        System.out.println("输入完成!arr[5]中的数是:");
        for (int i: arr) {
            System.out.print(i + "  ");
        }
    }
}

案例三

数组的动态扩充

就这个就是在对数组赋值时,如果数组已经满了以后我们还要对其进行添加数据,那么我们就会对其进行扩充。其实这个案例并不难,我们在对数组进行赋值之前可以判断一下,如果数组已经满了我们就对其进行扩容,随后继续赋值操作。但是怎么判断数组是否已经满了呢?在这里我们可以定义一个int类型的变量num来存储数组中元素的个数,它的初始值是0,当我们每次赋值以后我们就把它加1,这样我们就有了数组元素的个数。然后我们用数组元素个数num和数组最大长度arr.length进行比较,就可以知道数组是否满了。

下面我们就对数组进行扩充,我们先定义一个临时的数组temp,他的长度是原来数组长度的二倍,随后我们将原数组中数组元素逐个赋值到临时数组中temp,最后我们再将临时数组赋给原来的数组arr这就完成了对数组容量的扩充。下面我们来看看具体的代码实现:

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

public class Java04 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] arr = new int[5];
        int i = 0;
        while (true) {
            if (i == arr.length) {
                int[] temp = new int[2 * arr.length];
                for (int j = 0; j < arr.length; j++) {
                    temp[temp.length - 1 - j] = arr[arr.length - j - 1];
                }
                arr = temp;
            }
            System.out.println("请输入第"+ (i + 1) +"个数:");
            arr[arr.length - 1 - i] = in.nextInt();
            i++;
            System.out.println("是否继续添加?(1 继续, 其他结束");
            int tem = in.nextInt();
            if (tem != 1) {
                System.out.println(Arrays.toString(arr));
                break;
            }
        }
    }
}

下面我们来测试一下


        
我们数组的原始长度是5,输出发现长度变成了10,成功!这里还是逆序输入,具体算法我们下一个实例再看。

案例四

把一个数组插入到另一个数组的指定位置
一个数组插入到另一个数组势必会导致数组长度的增加,所以这也涉及数组容量的扩充,只不过这次不用扩充二倍,只需要增加第二个数组的长度的容量就行了。
我们再扩充被插入的数组arr1时要把他的长度oldArrlength保存下来,后面有妙用。然后arr1扩充后数组多出 arr2长度的容量。假设我们在arr1的第i个位置中插入arr2。那么从arr1从第i个位置开始往后所有的元素都要往后移动arr.length个位置,因为后面还有啊arr.length个位置。这样arr1从i开始就有arr2.length个空位,我们把放入就行了。我们怎么知道i位置后有多少元素呢?这就用到oldArrlength啦,这就是妙用。有了原始数组的长度我们就知道i位置后有多少元素啦。剩下的就没有难度了,对号入座赋值就行了,下面我们看看代码如何实现。

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

public class Test06work {
    public static void main(String[] args) {
        int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7};
        int[] arr2 = new int[]{9, 9, 9, 10, 10};
        System.out.println("请输入你要把arr1插入到arr2的的位置(0 - 7)");
        Scanner in = new Scanner(System.in);
        int index = in.nextInt();
        int oldArr1length = arr1.length;
        int[] temp = new int[arr1.length + arr2.length];
        for (int i = 0; i < arr1.length; i++) {
            temp[i] = arr1[i];
        }
        arr1 = temp;
        int i = 1;
        while (true){
            if(index == 7){
                for (int j = 0; j < arr2.length; j++) {
                    arr1[oldArr1length + j] = arr2[j];

                } break;
            }
            arr1[arr1.length - i] = arr1[oldArr1length - i];
            if (index == (oldArr1length - i)){
                for (int j = 0; j < arr2.length; j++) {
                    arr1[index + j] = arr2[j];
                }
                break;
            }
            i++;
        }
        System.out.println(Arrays.toString(arr1));
    }
}

我们插入第三个元素前面。


完美!!!

标签:arr,07,16,int,System,length,2022,数组,arr1
来源: https://www.cnblogs.com/wubishurufa/p/16485321.html