数组练习题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


小技巧

自动生成数组的遍历方式:数组名.fori

静态数组定义格式

数据类型 [] 数组名 = {,,,,};

动态数组定义格式

数据类型 [] 数组名 = new 数据类型[数组长度];

提示:以下是本篇文章正文内容,下面案例可供参考

例题

1.求最值

 /*
      定义一个数组,存储33,5,22,44,55
      遍历数组得到每一个元素, 求出数组中的最大值

       */
        //扩展问题:
        //1.根据求最大值的思路,自己改写下求最小智
        //2.为什么max要记录为arr[0],默认值不能为0吗?数组中的值可能都为负数
        //max的初始化值一定要是数组中的值。
        //3.循环中开始条件一定是0吗?
        //循环的开始条件如果为0,那么第一次循环的时候是自己跟自己比了一下,对结果没有任何影响,但是效率偏低
        //为了提高效率,减少一次循环的次数, 循环开始条件可以写1.


        int array[]={33,5,22,44,55},max=array[0];
        for (int i = 1; i < array.length; i++) {
           if (array[i]>max){
               max=array[i];
           }
        }

        System.out.println("该数组中的最大值为"+max);

遍历数组求和

 /*
      需求:
        生成10个1~100之间的随机数存入数组。
        1)求出所有数据的和
        2)求所有数据的平均数
        3)统计有多少个数据比平均值小
       */
        Random r = new Random();
        int arr[] = new int[10];
        int sum=0,avg=0,count=0;

        //求和
        for (int i = 0; i < arr.length; i++) {
            arr[i]=r.nextInt(100)+1;
            sum+=arr[i];

        }

        //遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        //求平均数,比平均数小得值
        avg=sum/arr.length;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]<avg){
                count++;
            }
        }

        System.out.println("所有数据的和:"+sum+"\n平均数:"+avg+"\n有"+count+"个数比平均值小");

交换数据

/*
      需求:
        需求:定义一个数组,存入1,2,3,4,5。 按照要求交换索引对应的元素。
        交换前: 1,2,3,4,5
        交换后: 5,2,3,4,1

       */

        int arr[] = new int[5];
        Scanner sc = new Scanner(System.in);

        //获取数据
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入需要交换的数据:");
            arr[i] = sc.nextInt();
        }


        //交换数据
        for (int i = 0,j = arr.length-1; i<j;i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }

        //输出数据
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }

打乱数组中的数据

 /*
      需求:
        需求:定义一个数组,存入1,2,3,4,5
        要求打乱数组中所有数据的顺序

       */

        int arr[] = new int[5];
        Scanner sc = new Scanner(System.in);


        //获取数据
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入需要交换的数据:");
            arr[i] = sc.nextInt();
        }


        //打乱顺序
        Random r = new Random();
        for (int i =0;i<arr.length;i++) {
            //生成一个随机索引
            int radomIndex = r.nextInt(arr.length);

            //把随即索引指向的元素和i指向的元素进行交换
            int temp = arr[i];
            arr[i] = arr[radomIndex];
            arr[radomIndex] = temp;
        }

        //输出数据
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }

Java内存分配

一、栈

main方法开始执行时会进栈,代码执行完成会出栈

二、堆

new出来的的东西会在这块内存中开辟空间并产生地址

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值