目录
* 它们的体重分别是 3Kg 、5kg、 1kg、3。4kg、2kg、50kg* 请问这六只鸡的总体重多少? 平均体重是多少?
要求: 定义一个数组1. double[] 表示是double 类型的数组 ,数组名 hens2. {3,5,1,3.4,2,50}; 表示数组的值/元素,依次表示数组的第几个元素
要求: 创建一个char类型的26个元素的数组,分别放置‘A’-’Z‘使用for循环访问所有元素并打印出来
要求:请求出一个数组int【】 的最大值 {4,-1,9,10,23},并得到对应的下标
数组可以存放多个同一类型的数据。数组也是一种数据类型,它是引用数据类型。
即:数(数据)组(一组)就是一组数据
数组的定义
1. 数据类型 数组名【】(【】这个可以也放在数据类型后面) = new 数据类型【大小】
2. int a[ ] =new int [5];//创建了一个数组,名字a,存放 5个int
3. 说明: 这是定义数组的一种方法。
4. 数组的引用(使用)
5. 数组名【下标/索引】
先来个小练习,了解一下数组是什么
要求:
思路分析: * 1, 定义 六个变量double ,求和 得到总体重 * 2. 平均体重 = 总体重/6 * 3. 分析传统实现方式问题 6=》600 * 4. 引出新的技术=》数组
代码实现:
- double hen1=3;
- double hen2=5;
- double hen3=1;
- double hen4=3.4;
- double hen5=2;
- double hen6=50;
- double totalWeight=hen1+hen2+hen3+hen4+hen5+hen6;
- double avgWeight=totalWeight/6;
- System.out.println("总体重="+totalWeight+"平均体重="+avgWeight);
结果:
(在前面的那道题的基础上进行了提升)
编程思想:
遍历数组得到数组的所有元素的和,使用for
1. 我们可以通过hens【下标】来访问数组的元素
下标是从0开始标号的,比如 第一个元素就是hens【0】
第2 个元素就是hens【1】,依次类推
2. 通过for 就可以循环的放问数组的元素/值
3. 使用一个变量 totalWeight 将各个元素累积
代码实现:
- double[] hens = {3, 5, 1, 3.4, 2, 50};
- double totalWeight = 0;
- System.out.println("=======使用数组解决========");
- //提示: 可以通过数组名 .length 得到数组的大小/长度
- System.out.println("数组的长度="+hens.length);
- for (int i = 0; i < hens.length; i++) {
- // System.out.println("第"+(i+1)+"个元素的值="+hens[i]);
- totalWeight += hens[i];
- }
- System.out.println("总体重=" + totalWeight + "平均体重=" + (totalWeight/hens.length));
结果:
1. 先声明数组
2. 创建数组
数据类型 数组名【】=new 数据类型【大小】
编程思想:
第一种动态分配方式 * 演示 数据类型 数组名【】=new 数据类型【大小】 * 循环输入5个成绩 ,保存到double数组 ,并输出 * * 步骤 1. 创建一个double 数组,大小 5 double scores[]=new double[5];
第2种动态分配方式,先声明数组,再new分配空间
代码实现:
-
- //(1)第一种动态分配方式
- //double scores[]=new double[5];
- //(2)第2种动态分配方式,先声明数组,再new分配空间
- double scores[];// 声明数组, 这时scores是null
- scores = new double[5];//分配内存空间,可以存放数据
- //2,循环输入
- //scores.length 表示数组的大小/长度
-
- Scanner myScanner = new Scanner(System.in);
- for (int i = 0; i < scores.length; i++) {
- System.out.println("请输入第" + (i + 1) + "个元素的值");
- scores[i] = myScanner.nextDouble();
- }
- //输出,遍历数组
- System.out.println("====数组的元素/值的情况如下:====");
- for (int i = 0; i < scores.length; i++) {
- System.out.println("第" + (i + 1) + "个元素的值=" + scores[i]);
- }
结果:
代码举例:
- int[] arr1={1,2,3,60,1.1};//结果是double 不能转换为 int
- int[] arr1={1,2,3,60,"hello"};//结果是String 不能转换为 int
- double[] arr2={1,2,3,60,1.1}; 这样就可以将int 转为 double
结果 :
代码举例:
String[] arr3={"北京","ijjl","millan"};
默认值如下:
int 0; short 0; byte 0;long 0;float 0.0;double 0.0;
char \u0000;boolean false;Strin g null;
代码举例:
-
- double[] arr4=new double[4];
- System.out.println("=====数组arr4=====");
- for (int i=0;i
- System.out.println(arr4[i]);
- }
结果:
- 使用数组的步骤
1. 声明数组并开辟空间
2. 给数组各个元素赋值
3. 使用数组
- 数组的下标是从0开始的
- 数组下标必须在指定范围内使用,否则报:下标越界异常,比如:
- int [] arr=new int[5];
-
- System.out.println(arr[5]);
结果:
- 数组属于引用类型,数组型数据是对象(object)
数组练习:
练习1:
要求: 创建一个char类型的26个元素的数组,分别放置‘A’-’Z‘
使用for循环访问所有元素并打印出来
提示:char 类型数据运算 ’A‘ +1 =》’B'
* 思路分析:
* 1. 定义一个数组char【】 chars=new char【26】
* 2. 因为‘A’+1=‘B’ 类推,所以老师使用for来赋值
* 3. 使用for循环访问所有元素
代码实现:
- char[] chars=new char[26];
- for (int i =0;i
//循环26次 - //char 是 char[]
- //char[i] 是char
- chars[i]=(char) ('A'+i);//'A'+i是int, 需要强制类型转换
- }
- //循环输出
- System.out.println("====char数组=====");
- for (int i =0;i
//循环26次 - System.out.println(chars[i]+"");
- }
结果:
练习2:
要求:请求出一个数组int【】 的最大值 {4,-1,9,10,23},并得到对应的下标
编程思想:
1, 定义一个int 数组int【】 arr ={4,-1,9,10,23};
2. 假定max=arr【0】是最大值,maxIndex=0;
3. 从下标1开始遍历数组arr,如果max<当前元素,说明max不是真正的最大值,我们就max=当前 元素;maxIndex=当前元素下标
4。 当我们遍历这个数组arr后,max就是真正的最大值,maxIndex最大值对应的下标
代码实现:
- int[] arr={4,-1,9,10,23};
- int max=arr[0];//假定第一个元素就是最大值
- int maxIndex=0;
- for (int i=1;i
//从下标1开始遍历arr - if (max
//如果max<当前元素 - max=arr[i];//把max设置成当前元素
- maxIndex=i;
- }
- }
- //当我们遍历这个数组arr后,max就是真正的最大值,maxIndex最大值对应的下标
- System.out.println("max="+max+"maxIndex="+maxIndex);
结果: