一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。请问这六只鸡的总体重是多少?平
均体重是多少? 请你编一个程序。
根据之前所学知识,大家基本都是直接定义6个变量存储这些体重,然后所有体重相加,再求平均体重。
思路: 定义 6 个变量 , 加起来 总体重, 求出平均体重.引出 -> 数组
//数组的引出
//
public class Array01 {
//编写一个main方法
public static void main(String[] args) {
/*
它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg 。
请问这六只鸡的总体重是多少?平均体重是多少?
思路分析
1. 定义六个变量 double , 求和 得到总体重
2. 平均体重 = 总体重 / 6
3. 分析传统实现的方式问题. 6->600->566
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);
}
}
这上面是最笨拙的方式了,那怎样才能简单便捷呢?
数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。 即:数(数据)组(一组)就是一组数据。
根据上面那问题,我们可以用数组来解决下。
//数组的引出
//
public class Array01 {
//编写一个main方法
public static void main(String[] args) {
/*
它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg 。
请问这六只鸡的总体重是多少?平均体重是多少?
思路分析
1. 定义六个变量 double , 求和 得到总体重
2. 平均体重 = 总体重 / 6
3. 分析传统实现的方式问题. 6->600->566
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);
//比如,我们可以用数组来解决上一个问题 => 体验
//
//定义一个数组
//爱摸鱼的TT~解读
//1. double[] 表示 是double类型的数组, 数组名 hens
//2. {3, 5, 1, 3.4, 2, 50} 表示数组的值/元素,依次表示数组的
// 第几个元素
//
double[] hens = {
3, 5, 1, 3.4, 2, 50, 7.8, 88.8,1.1,5.6,100};
//遍历数组得到数组的所有元素的和, 使用for
//爱摸鱼的TT~解读
//1. 我们可以通过 hens[下标] 来访问数组的元素
// 下标是从 0 开始编号的比如第一个元素就是 hens[0]
// 第2个元素就是 hens[1] , 依次类推
//2. 通过for就可以循环的访问 数组的元素/值
//3. 使用一个变量 totalWeight 将各个元素累积
System.out.println("===使用数组解决===");
//老师提示: 可以通过 数组名.length 得到数组的大小/长度
//System.out.println("数组的长度=" + hens.length);
double totalWeight = 0;
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) );
}
}
例如:int a[] = new int[5]; // 创建了一个数组,名字为a,存放5个int
说明:这是定义数组的一种方法,为了让大家明白,我画数组内存图说明

比如:你要使用a数组的第3个数,即a[2];// 因为数组下标是从0开始的
案例:
循环输入5个成绩,保存到double数组,并输出
import java.util.Scanner;
public class Array02 {
//编写一个main方法
public static void main(String[] args) {
//演示 数据类型 数组名[]=new 数据类型[大小]
//循环输入5个成绩,保存到double数组,并输出
//步骤
//1. 创建一个 double 数组,大小 5
//(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 a[]; 或者 int[] a;
语法: 数组名=new 数据类型[大小];
a = new int[10];
语法:数组类型 数组名[] = {
元素值,元素值...}
int[] a = {
2,4,6,7,9,10},如果知道数组有多少元素,就具体值
上面的用法相当于:int a[] = new int[9];
a[0] = 2; a[1] = 4; a[2] = 6;...
//int[] arr1 = {1, 2, 3, 60,"hello"};//String ->int
double[] arr2 = {
1.1, 2.2, 3.3, 60.6, 100};//int ->double
int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null
short[] arr4 = new short[3];
System.out.println("=====数组arr4=====");
for(int i = 0; i < arr4.length; i++) {
System.out.println(arr4[i]);
}

int [] arr = new int[5];
//System.out.println(arr[5]);//数组越界
public class ArrayExercise01 {
//编写一个main方法
public static void main(String[] args) {
/*
创建一个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 < chars.length; i++) {
//循环26次
//chars 是 char[]
//chars[i] 是 char
chars[i] = (char)('A' + i); //'A' + i 是int , 需要强制转换
}
//循环输出
System.out.println("===chars数组===");
for( int i = 0; i < chars.length; i++) {
//循环26次
System.out.print(chars[i] + " ");
}
}
}

public class ArrayExercise02{
public static void main(String[] args){
//需求:
//请求出一个数组 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 最大值
//代码实现