静态数组和动态数组


一、静态数组

常用格式:

        int [] a = new int[]{11 , 22 , 33 , 44};
        int [] b = {11 , 22 , 33 , 44};

二、案例:静态数组累加

五个数据分别是11,22,33,44,55,计算相加总数
1、将五个数据存放到静态数组中
2、遍历数组中的每个数据,然后再外面定义求和变量把他们累加起来

代码


public class Demo {
    public static void main(String[] args) {
        //定义静态数组
        int [] b = {11 , 22 , 33 , 44};
        //定义一个变量存储相加的和
        int sum = 0;
        for(int i = 0 ; i < b.length ; i++){
            sum += b[i];
        }
        System.out.println("五个数据相加为" + sum);
    }
}

运行结果

五个数据相加为110

三、动态数组

常用格式;

        //定义动态数组 数据类型[] 数组名 = new 数据类型[长度];
        int[] arr1 = new int[4];

四、案例:评委打分案例

录入6名评委的打分,录入完毕后输出选手的平均得分

分析;
1、定义一个动态初始化的数组存分数

2、遍历数组中的每个位置,每次提示用户录入一个评委的分数,并存入到数组对应的位置

3、 遍历数组中的每个元素进行求和,最终算出平均分打印出来

代码

//导入库
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        //定义一个动态数组
        double[] scores = new double[6];
        //创建一个Scanner对象
        Scanner sc = new Scanner(System.in);
        int j = 0;
        //循环,录入评委打分情况
        for(int i = 1 ; i <= scores.length ; i++) {
            System.out.println("第" + i + "个评委打分");
            scores[j++] = sc.nextDouble();
        }
        double sum = 0.0;

        //遍历数组,计算选手平均值
        for(int i = 0; i < scores.length ; i++){
            sum +=scores[i];

        }
        System.out.println("选手平均值为" + sum / scores.length);
    }
}

运行结果

1个评委打分
11.12个评委打分
22.23个评委打分
33.34个评委打分
44.45个评委打分
55.56个评委打分
66.6
选手平均值为38.85

五、案例1.1:数组求最值

案例:给定500、790、900、100、50五个数据,求最大值

分析:
1、把数值拿到程序中去,用数组装起来
2、定义一个变量用于记录最终的最大值
3、从第二个位置开始;遍历数组的数据,如果遍历的当前数据大于max变量存储的数据,则替换变量存储的数据为当前数据
4、循环结束输出max变量

代码

public class Demo {
    public static void main(String[] args) {
        //定义一个静态数组
        int [] num = {500,790,900,100,50};
        //定义一个初始值为0
        int a = 0;
        for(int i = 0 ; i < num.length ; i++){
            if(a <= num[i]){
                a = num[i];
            }
        }
        System.out.println("五个数据中最大值为" + a);
    }
}

运行结果

五个数据中最大值为900

六、案例1.2:数组反转

案例:某个数组有5个数据:500,790,900,100,50,请将这个数组中的数据进行反转
分析;
1、依次前后交换数据

代码1

public class Demo {
    public static void main(String[] args) {
        //定义一个静态数组
        int [] num = {500,790,900,100,50};
        int [] num1 = new int[num.length];
        for(int j = 0 , i = num.length - 1 ; j < num.length ; j++ , i--){
            //替换
            num1[j] = num[i];
        }
        for(int i = 0 ; i < num.length ; i++){
            System.out.println("num1[" + i + "]" + "=" + num1[i]);
        }
    }
}

代码2


public class Demo {
    public static void main(String[] args) {
        //定义一个静态数组
        int [] num = {500,790,900,100,50};
        for(int i = 0 , j = num.length -1 ; i < j ; i++ , j--){
            int temp = num[j];
            num[j] = num[i];
            num[i] = temp;
        }
        for(int i = 0 ; i < num.length ; i++){
            System.out.println(num[i]);
        }
    }
}

运行结果

num1[0]=50
num1[1]=100
num1[2]=900
num1[3]=790
num1[4]=500

七、案例1.3:随机排名

案例:某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报,请先一次录入5名员工的工号,然后展示出来一组随机的排名顺序

分析:
1、在程序中录入5名员工的工号存储起来
2、依次遍历数组中的每个数据
3、每遍历到一个数组,都随机一个索引值出来,让当前数据与该索引位置出的数据进行交换

代码

import java.util.Scanner;
import java.util.Random;

public class Demo {
    public static void main(String[] args) {
        //定义一个动态数组
        int[] nums = new int[5];
        //创建一个Scanner对象
        Scanner sc = new Scanner(System.in);
        int j = 0;
        //循环,录入员工工号情况
        for(int i = 1 ; i <= nums.length ; i++) {
            System.out.println("第" + i + "个员工工号");
            nums[j++] = sc.nextInt();
        }

        //打乱数组中的元素顺序
        Random r = new Random();
        for(int i = 0; i < nums.length ; i++){
            //每遍历一个数据,都随机一个数组索引范围内的值,然后让当前遍历的是数据与该索引处的数值交换位置
            int index = r.nextInt(5);
            int temp = nums[index];
            nums[index] = nums[i];
            nums[i] = temp;
        }

        //遍历
        for(int i = 0; i < nums.length ; i++){
            System.out.print(nums[i] + " ");
        }
    }
}

运行结果

1个员工工号
452个员工工号
233个员工工号
324个员工工号
455个员工工号
65
45 65 32 23 45 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值