Java数组之一维数值数组之成绩统计
一维数组
数组对于每一门编程语言来说都是重要的数据结构之一,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[] arr = new int[n];
// 第三步:把成绩赋值给数组元素
for(int i=0;i<n;i++){
arr[i] = input.nextInt();
}
// 第四步:求所有成绩的和
int sum=0;
for(int i=0;i<n;i++){
sum+=arr[i];
}
// 第五步:求平均成绩
double x;
x=(double)sum/n;
System.out.println("数学平均成绩为:"+x);
//System.out.printf("数学平均成绩为:%.f",x); //这样的输出格式不符合题意,题目中的保留几位有效数字没有明确,故不能使用这种方法。
/********** End **********/
}
}
1.测试输入:12 99 89 66 76 57 90 98 87 76 65 65 78
—— 预期输出 ——
数学平均成绩为:78.83333333333333
2.测试输入:10 89 8 78 9 87 68 76 56 98 88
—— 预期输出 ——
数学平均成绩为:65.7
3.测试输入:11 76 87 89 78 9 87 76 76 89 67 56
—— 预期输出 ——
数学平均成绩为:71.81818181818181