第1关:学习-Java数组之一维数值数组之成绩统计
任务描述
本关任务:统计某班级所有人的数学平均成绩。
相关知识
为了完成本关任务,你需要掌握: 1.声明一维数值数组变量; 2.一维数值数组的创建; 3.一维数值数组的长度; 4.一维数值数组的初始化。
数组对于每一门编程语言来说都是重要的数据结构之一,Java 语言中提供的数组是用来存储固定长度的同类型数据,这些数据称为数组元素。下面我们将介绍用于存储数值的一维数组。
声明一维数值数组变量
声明数值数组变量,用于代表一个对象, 只是一个名字而已, 对象还没有创建,下面是声明数值数组变量的语法:
数据类型[] 数组名; // 中括号中不能有数字
示例:
// 声明一个用于存储int类型的数组变量 arr。
int [] arr;
// 声明一个用于存储long类型的数组变量 arr。
long [] arr;
// 声明一个用于存储double类型的数组变量 arr。
double [] arr;
创建一维数值数组
Java 语言使用 new 操作符来创建数组,语法如下:
new 数据类型[数组长度];
后期要想使用该数组,需要把数组变量指向该数组。 示例:
// 声明一个数组变量并指向一个用于存储10个int类型的数组
int[] arr = new int[10];
一维数组初始化
数组初始化分为两种:动态初始化和静态初始化。 动态初始化:创建一个数组,指定数组长度,但不指定数组存储的具体值。根据数组存储数值类型的不同,会给数组自动赋不同的初始值,具体可分为以下两种:
-
对于 byte,short、int 和 long 类型,数组中每个值被赋值成 0;
-
对于 float,double 类型,数组中每个值被赋值成 0.0。
动态初始化示例:
public static void main(String[] args) {
// 创建一个用于存储10个int类型的数组
int[] ints = new int[10];
System.out.print(Arrays.toString(ints));
}
执行结果:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
在以上实例中,数组长度 10 可用变量代替,如下所示:
public static void main(String[] args) {
// 定义变量n
int n =10;
// 创建一个用于存储10个int类型的数组
int[] ints = new int[n];
}
静态初始化:创建一个数组,指定数组存储的具体值。 示例:
// 声明一个用于存储数字10,20,30的的数组。
// 第一种方式:
int[] arr = new int[]{10,20,30};
// 第二种方式:
int[] arr = {10,20,30};
一维数组元素的使用
数组的元素是通过索引访问的,数组索引从 0 开始。 创建数组 arr:
int[] arr = new int[]{10,20,30};
其中第一个元素 10 的索引为 0,第二个元素 20 的索引为 1,第三个元素 30 的索引为 2。我们可以通过如下方式访问数组:
-
数组名[索引],获取出数组中的元素。arr[0] 可以获取到元素 10;
-
数组名[索引] = 数值,为数组中的元素赋值。arr[0]=40 可以把数组的第一个元素改成 40。
示例:
public class ArrTest {
public static void main(String[] args) {
// 定义数组,并赋初值
int[] arr = new int[]{10,20,30};
// 通过索引获取第一个元素
System.out.println(arr[0]);
// 为数组第一个元素赋值
arr[0]=40;
// 重新查看数组第一个元素
System.out.print(arr[0]);
}
}
执行结果:
10
40
一维数组长度
我们可以使用数组的属性 length 来获取数组的长度。 示例:
public class ArrTest {
public static void main(String[] args) {
// 定义数组,并赋初值
int[] arr = new int[]{10,20,30};
// 获取数组的长度
System.out.println(arr.length);
}
}
执行结果:
3
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,求班级数学平均成绩,具体要求如下:
- 接收给定的数据(如:4 88 43 43 98 #...,其中第一个数代表数组长度,其余数代表班级所有人数学成绩,# 号用于终止接收数据,这些数据用空格进行分隔),遇到 # 号终止接收;
- 求班级数学平均成绩,平均成绩用 double 类型表示。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧 “测试结果”区查看具体的测试集详情。 例: 测试输入:
4 6 6 6 6 #
预期输出:
数学平均成绩为:6
开始你的任务吧,祝你成功!
源代码:
/*
任务:仔细阅读给出的代码框架及注释,在 Begin-End 间编写程序代码,求班级数学平均成绩,具体要求如下:
- 接收给定的数据(如:4,88,43,43,98,#...,其中第一个数代表数组长度,
其余数代表班级所有人数学成绩,# 号用于终止接收数据),遇到 # 号终止接收;
- 求班级数学平均成绩,平均成绩用 double 类型表示。
注意:数字分隔符为中文逗号。
*/
import java.util.Scanner;
public class ArrTest {
public static void main(String[] args) {
// 请在Begin-End间编写代码
/********** Begin **********/
// 第一步:接收给定的第一个数,用于定义数组长度
Scanner input=new Scanner(System.in);
int n=input.nextInt();
// 第二步:定义数组
int[] array=new int[n];
int i=0;
// 第三步:把成绩赋值给数组元素
while(!input.hasNext("#")){
array[i]=input.nextInt();
i++;
}
// 第四步:求所有成绩的和
int sum=0;
for(int j=0;j<n;j++){
sum+=array[j];
}
// 第五步:求平均成绩
double average=sum*1.0/n;
System.out.print("数学平均成绩为:"+average);
/********** End **********/
}
}