关于一维数组的基本操作

这篇博客探讨了动态初始化和静态初始化在数组操作中的区别,并通过一个实际例子展示了如何使用动态初始化创建评委打分系统。程序接收6个评委的分数,去除最高分和最低分后计算平均得分。同时,文中提到了数组操作中可能出现的索引越界和空指针异常问题,强调了正确操作数组的重要性。
摘要由CSDN通过智能技术生成

静态初始化和动态初始化的区别:
动态初始化:手动指定数组的长度,有系统分配初始值,适用于,只明确数值个数嘛,不明确元素内容
例如:使用数组容器录入键盘录入的元素 int[] arr=new int[5];
静态初始化,手动指定数组的元素,系统会根据元素的个数,自动开辟出相应数组大小
适用于,需求中已经明确要操作的内容,直接初始化即可。

数组的遍历使用for循环遍历
数组的最大值与最小值,都是假设第一个元素为最大值或者最小值,然后依次与数组中元素进行比较即可
数组操作的常见两个问题
索引越界:访问数组中没有的索引,造成数组越界问题
空指针异常:访问的数组已经不在指向堆内存的数据,造成空指针异常
null:空值,引用的数据类型的默认值,表示不在指向任何有效对象

多个数组指向同一个地址
没有New就不会开辟新的地址
把arr的地址给了arr2
造成多个数组指向同一个地址
当有两个数组指向同一个数组时,看到都是改变后的
Int [] arr=new int[1];
例如arr[0]=1;
int arr2[]=arr;
arr2[0]=3;

输出的就是3为最后一次,如果没有进行New的操作则不会在内存中开辟新的地址,只是将arr地址赋值给arr2两个数组指向同一个地址

public class test5 {
    /*

    评委打分:在编程比赛中,有六个评委为参赛选手打分,分数为0-100的整数分
    选手的最后得分为:去掉一个最高分和一个最低分后四个评委的平均值(不考虑小数部分)
    思路:定义一个动态数组,长度为6
    键盘录入评委的评分
    由于是6个评分,所以,接受评委分数的操作用循环
    求出最大值和最小值
    求出数组总和
    按照计算规则计算得平均分
    输出平均分

     */
    public static void main(String[] args) {
        System.out.println("-------------评委打分计算-----------");
        Scanner sc = new Scanner(System.in);
        int arr[]=new int[6];
        System.out.println("请输入第一个评委的分数");
        arr[0] = sc.nextInt();
        System.out.println("请输入第二个评委的分数");
        arr[1] = sc.nextInt();
        System.out.println("请输入第三个评委的分数");
        arr[2] = sc.nextInt();
        System.out.println("请输入第四个评委的分数");
        arr[3] = sc.nextInt();
        System.out.println("请输入第五个评委的分数");
        arr[4] = sc.nextInt();
        System.out.println("请输入第六个评委的分数");
        arr[5] = sc.nextInt();
        int sum=0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }

        //找出最大值
        int  max=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(arr[0]<arr[i]){
                max=arr[i];
            }
        }
        System.out.println("评分最高位:"+max);
        //找出最小值
        int  min=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(arr[0]>arr[i]){
                min=arr[i];
            }
        }
        System.out.println("评分最小位:"+min);

        int sum1=(sum-max-min)/4;
        System.out.println("最终评分位:"+sum1);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值