首页 > 其他分享 >数组复习片+练习题

数组复习片+练习题

时间:2023-07-31 09:58:18浏览次数:37  
标签:练习题 arr 复习 int System 数组 println out

数组的遍历

  • 定义一个数组,求和
int[] arr = {1,2,3,4,5,6,7};
        int sum = 0;
        for (int i = 0; i <arr.length ; i++) {
            sum = sum +arr[i];
        }
        System.out.println(sum);
  • 定义一个数组,统计数组里面一共有多少能够被3 整除的数字:
int[] arr1 = {4,62,85,36,97,53,68,17,84,82,94,15,58,52,57,21,73,91,25,57,39,75};
        int count = 0;
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i]%3==0){
                count++;
            }
        }
        System.out.println("共有"+count+"个数字能够被3整除");
    }

  • 定义一整数类型数组,如果该数字是奇数,则将当前数字扩大两倍,如果是偶数,则将该数字变成该数字的1/2.

一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,但是不建议。

 int[] arr3 = {21,46,42,56,24,556,83,72,41,63,58,24};
        for (int i = 0; i < arr3.length; i++) {
            if (arr3[i]%2==1) {
                arr3[i] = arr3[i]*2;
            }else
                arr3[i] = arr3[i]/2;
           
        }
        //一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,但是不建议。
        for (int i = 0; i < arr3.length; i++) {
            System.out.println(arr3[i]);
        }

数组的动态初始化和常见的问题

静态:已经知道数组的具体数据(可以写死) :int[] arr= {1,2,4}
动态:不知道数组里面的具体数值 int[] arr={?,?,?}

动态初始化:初始化的时候,只指定数组的长度,有系统为数组分配初始值
格式:数据类型 [] 数组名 = new 数据类型[数组长度]
int[] arr = new int[100];

  • 定义一个数组,用来存储班级中五十个学生的姓名,姓名未知,带学生报道后,在进行添加
 String[] arr4 = new String[50];
        arr4[0] = "da";
        arr4[1] = "ff";
        arr4[2] = "dafew";
        arr4[3] = "dwfwea";
        arr4[4] = "dafwe";
        arr4[5] = "dwefwa";
        System.out.println(arr4[0]);
        System.out.println(arr4[1]);
        System.out.println(arr4[2]);
        System.out.println(arr4[3]);
        System.out.println(arr4[4]);
        System.out.println(arr4[5]);
        System.out.println(arr4[6]);

在这里插入图片描述

字符串的数组 初始值默认为NULL,int 类型的默认初始值为0;

 int[] x= new int[3];
        x[0] = 1;
        System.out.println(x[0]);
        System.out.println(x[1]);
        System.out.println(x[2]);

在这里插入图片描述
初始化规律:
数组默认初始化值:
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值为'/u0000' 空格
布尔类型:默认初始化值为 false
引用数据类型:默认初始化值为null;

静态初始化和动态初始化的区别

动态:手动指定数组长度,由系统给出默认初始化值。
静态:手动指定数组元素,系统会根据元素的个数,计算出数组的长度。

  • 举例:
    用数组容器来存储键盘录入五个整数,应使用动态数组 int[] arr=

数组常见的问题

在这里插入图片描述
.ArrayIndexOutOfBoundsException:数组索引超出范围异常(索引越界异常)
原因:访问了不存在的索引

数组常见的操作

  1. 求最值
    已知数组元素为{2,3,5,1,7,4}
    请找出数组中最大值 并打印在控制台:
        int[] arr6 = {2,3,5,1,7,4};
        int max =arr6[0];      //临时认为0索引最大
        for (int i = 0; i < arr6.length; i++) {//循环第一次是自己和自己比较,可以跳过此循环,从i=1开始进行循环
            if (arr6[i]>=max){
                max = arr6[i];
            }
        }
        System.out.println(max);

max的初始值不能随便写成0,如果数组中的值都是负数,此时max等于0 ,大于数组中的任意值,所以一般临时默认为索引0的值是最大的。

  1. 求和并统计个数
    生成10个0~100之间的随机数,
    (1)求出所有数据的和,
    (2)求出所有数据的平均数,
    (3)统计有多少个数小于平均值
 int[] arr= new int[10];
        Random r = new Random();
        //生成数组,一个循环只干一件事
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100);
            arr[i] = number;
        }
        //所有数据的和
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum +arr[i];
            System.out.print(arr[i]+"  ");
        }
        System.out.println("数组中所有的数字和是"+sum);

        //求所有的平均数
        double avg = sum/10.0;
        System.out.println("平均数是"+avg);

        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]<avg){
                count++;
            }
        }
        System.out.println("比平均数小的个数总共有"+count+"个");

输出结果:
在这里插入图片描述

  1. 交换数组中的数据
    本人方法:
    
        int[] arr = {1,2,3,4,5,6,7,8};
        //不能小于arr.length,否则循环到数组长度的1/2之后,交换好的数据又会被交换回去。
        for (int i = 0; i < arr.length/2; i++) {
            int j= arr.length-1-i;
            int temp;
            temp = arr[i];
            arr[i] =arr[j];
            arr[j] =temp;
        }

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

b站up主方法:

int[] arr = {1,2,3,4,5,6,7,8};
        for (int i = 0,j = arr.length-1; i < j;i++,j--) {
            int temp;
            temp = arr[i];
            arr[i] =arr[j];
            arr[j] =temp;
        }
        for (int i : arr) {
            System.out.print(i);
        }

标签:练习题,arr,复习,int,System,数组,println,out
From: https://www.cnblogs.com/wangkang3027447800/p/17592650.html

相关文章

  • 操作系统复习 MITS6.1810 lab util 记录
    labutilsleep介绍:主要用来熟悉下环境以及代码结构。Seekernel/sysproc.cforthexv6kernelcodethatimplementsthesleepsystemcall(lookforsys_sleep),user/user.hfortheCdefinitionofsleepcallablefromauserprogram,anduser/usys.Sfortheas......
  • 通过求逆元的几种方式复习基础数论
    逆元若\(ax=1\pmodp\),那么称\(a\)是\(x\)的逆元,显然\(x\)也是\(a\)的逆元。两边同时除以\(a\)得到\(x=\frac1a\pmodp\),可以写成\(x=a^{-1}\pmodp\),这么看来,乘法逆元就是取模意义下的倒数啊。若\(p\)为质数,\(0\)没有逆元,\(1\)的逆元是\(1\),\(p-1\)的逆元......
  • React(十二):props的函数组件中使用
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>props的函数组件实现</title><scriptsrc="https://unpkg.com/react@18/umd/react.development.js"></script><scriptsr......
  • 歌谣学前端之数组的方法
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷微信公众号前端小歌谣关注公众号带你进入前端学......
  • 暑期竞赛培训 Day 11—— < 树状数组 >
    本文大部分内容来自教练的博客[https://www.cnblogs.com/hbhszxyb/]。树状数组一、适用范围:树状数组是一个查询和修改复杂度都为log(n)的数据结构,常常用于查询任意区间的所有元素之和。与前缀和的区别是支持动态修改,log(n)的时间进行修改,log(n)查询。支持如下操作:[1]单......
  • Java学习-4.数组
    一、数组类型数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致。定义一个数组类型的变量,使用数组类型“类型[]”,例如,int[]。和单个基本类型变量不同,数组变量初始化必须使用newint[5]表示创建一个可容纳5个int元素的数组。Java的数组有几个特点:数组所有元素......
  • C# 使用SIMD向量类型加速浮点数组求和运算(4):用引用代替指针, 摆脱unsafe关键字,兼谈Unsa
    作者:zyl910目录一、引言二、办法说明2.1历史2.2局部引用变量与引用所指的值(类似指针的地址运算符&、间接运算符*)2.3重新分配局部引用变量(类似指针直接赋值)2.4引用地址调整(类似指针加减法)2.5引用地址比较(类似指针比较)2.6重新解释(类似C++的reinterpret_cast)2.7引用取消只......
  • 力扣---6900. 统计完全子数组的数目
    给你一个由 正 整数组成的数组 nums 。如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :子数组中 不同 元素的数目等于整个数组不同元素的数目。返回数组中 完全子数组 的数目。子数组 是数组中的一个连续非空序列。 示例1:输入:nums=[1,3,1,2,2]......
  • C语言分支与循环(12)--- 练习题
    一.练习题1.给定两个数,求这两个数的最大公约数,如求24与18的最大公约数方法:假设m=24n=181.将24与18进行取模,得到的结果是商1,余数为6,有余数证明并没有被整除2.将18再模6,可以得到商3余0,所以我们可以得到6是我们的最大公约数3.如果声明一个变量r来接收数据,如果r=0则代表n为最大公约数,......
  • LC 4、寻找两个正序数组的中位数
    LC4、寻找两个正序数组的中位数题目描述这是LeetCode4、寻找两个正序数组的中位数,难度为困难给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的「中位数」。示例:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数......