diff --git "a/04 \346\235\216\346\230\216\345\201\245/20221208 \346\225\260\347\273\204.md" "b/04 \346\235\216\346\230\216\345\201\245/20221208 \346\225\260\347\273\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..c286bf5970d46dafab02109f03fadbe74ea47520 --- /dev/null +++ "b/04 \346\235\216\346\230\216\345\201\245/20221208 \346\225\260\347\273\204.md" @@ -0,0 +1,96 @@ +## 数组 + +#### 1.数组概述 + +一次性声明大量的用于存储数据类型的变量 + +要存储的数据通常都是同类型数据,例如:考试成绩 + +int[] scores = {100,100,100,100,100,100,100…}; + +#### 2.数组是什么 + +数组(array):是一种用于存储多个相同数据类型的存储模型(可以理解为容器) + +#### 3.数组定义格式 + +##### 格式1: + +数据类型[ ] 变量名: + +​ 范例 int[ ] arr ; 跟 int arr相比; + +​ int[ ] arr 定义一个int 类型的数组,数组名是arr + +​ int arr 定义了一个变量 变量名是arr + +##### 格式2: + +数据类型 变量名[ ]: + +​ int arr [ ]; + +​ 定义了一个int类型的变量, 变量名是arr数组 + +推荐使用:格式1 int [ ] arr; + +#### 3.数组初始化概述 + + Java 数组必须先初始化 才能使用 + +所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值注意: + +数组中的每一个数据,我们称之为数组中的元素 + +##### 3.1静态初始化 + +静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度格式: + +数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…}; + +范例:int[] arr = new int[]{1,2,3}; + + 简化格式: 数据类型[ ] 变量名 = {数据1,数据2,} + +#### 4.遍历 + +数组遍历是什么 + +获取数组中的每一个元素,我们可以把获取到的元素输出在控制台 + +获取数组长度(元素个数) + +格式: 数组名.length + +​ arr .length + +数组遍历指的是把数组中的元素取出来,取出来之后可以(打印,求和,判断…) + +#### 作业 + +定义一个可以存储5个元素的int数组,数据来自于键盘录入,最后遍历数组,把元素输出在控制台 + +``` java +import java.util.Scanner; + +//需求:定义一个可以存储5个元素的int数组,数据来自于键盘录入,最后遍历数组,把元素输出在控制台 +//分析: +//① 数组长度可知,元素未知,采用动态初始化 +//② 键盘录入,使用Scanner实现 +public class D1 { + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int[] arr=new int[5]; + for (int i = 0; i max){ + max = arr[i]; + } + } + // 4. 循环结束后, 打印最大值. + System.out.println("max:" + max); + } +} +``` + +## 数组基本查找【应用】 + +需求: + + 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控 + + 制台输出找到的索引值。 + +思路: + + 1.定义一个数组,用静态初始化完成数组元素的初始化 + + 2.键盘录入要查找的数据,用一个变量接收 + + 3.定义一个索引变量,初始值为-1 + + 4.遍历数组,获取到数组中的每一个元素 + + 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给 + +索引变量,并结束循环 + + 6.输出索引变量 + +``` java + // 1.定义一个数组,用静态初始化完成数组元素的初始化 + int[] arr = {19, 28, 37, 46, 50}; + // 2.键盘录入要查找的数据,用一个变量接收 + Scanner sc = new Scanner(System.in); + System.out.println("请输入您要查找的元素:"); + int num = sc.nextInt(); + // 3.定义一个索引变量,初始值为-1。假设要查找的数据, 在数组中就是不存在的 + int index = -1; + // 4.遍历数组,获取到数组中的每一个元素 + for (int i = 0; i < arr.length; i++) { + // 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值 +//对应的索引赋值给索引变量,并结束循环 + if(num == arr[i]){ + // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + index = i; + break; + } + } + // 6.输出索引变量 + System.out.println(index); + } +} +``` + +## 作业 + +需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 + + 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。 + + 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + + 2.键盘录入评委分数 + + 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + + 4.求出数组最大值 + + 5.求出数组最小值 + + 6.求出数组总和 + + 7.按照计算规则进行计算得到平均分 + + 8.输出平均分 + +``` java +import java.util.Scanner; + +//在编程竞赛中,有6个评委为参赛的选手打分,分数0-100的整数分。选手的最后得分为: + // 去掉一个最高分和一个最低分后的4个评委平均值(不考虑小数部分)。 +public class D3 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + double[] arr=new double[6]; + for (int i= 0;i