目录
任务7、统计一组学生成绩
(一)编程实现
在net.yangxinying.p02.t07包里创建Task07类
package net.yangxinying.p02.t07;
import java.util.Scanner;
/**
* 功能:统计一组学生成绩
* 作者:杨鑫莹
* 日期:2022年04月07日
*/
public class Task07 {
public static void main(String[] args) {
// 声明部分
double[] scores = new double[10]; // 双精度一维数组,10个元素,scores[0], scores[1],..., scores[9]
double sum, average, max, min;
Scanner sc = new Scanner(System.in);
// 输入部分
for (int i = 0; i < scores.length; i++) {
System.out.print("scores[" + i + "] = ");
scores[i] = sc.nextDouble();
}
// 处理部分
sum = 0;
for (int i = 0; i < scores.length; i++) {
sum = sum + scores[i];
}
average = sum / scores.length;
max = Double.MIN_VALUE;
for (int i = 0; i < scores.length; i++) {
if (scores[i] > max) {
max = scores[i];
}
}
min = Double.MAX_VALUE;
for (int i = 0; i < scores.length; i++) {
if (scores[i] < min) {
min = scores[i];
}
}
// 输出部分
System.out.println("sum = " + sum);
System.out.println("average = " + average);
System.out.println("max = " + max);
System.out.println("min = " + min);
}
}
-
运行程序,查看结果
-
可以利用增强for循环来遍历数组
任务1、确保输入成绩在[0, 100]范围内
package net.yangxinying.p02.t07;
import java.util.Scanner;
/**
* 功能:统计一组学生成绩
* 作者:杨鑫莹
* 日期:2022年04月14日
*/
public class Task07 {
public static void main(String[] args) {
//声明部分
double[] scores = new double[10];//双精度一维数组,10个元素,scores[0],scores[1],...,scores[9]
double sum, average, max, min;
Scanner sc = new Scanner(System.in);
//输入部分
for(int i = 0; i < scores.length; i++) {
while (true) {
System.out.print("scores[" + i + "] = ");
scores[i] = sc.nextDouble();
//判断成绩是否合法 - [0,100]
if (scores[i] >= 0 && scores[i] <=100) {
break; //跳出while循环
}else {
//提示用户输入成绩不合法
System.out.println("温馨提示:成绩必须在[0,100]之间!");
}
}
}
//处理部分
sum = 0;
for (int i = 0; i < scores.length; i++) {
sum = sum + scores[i];
}
average = sum / scores.length;
max = Double.MIN_VALUE;
for(double score : scores) {
if(max < score) {
max = score;
}
}
min = Double.MAX_VALUE;
for(double score : scores) {
if (min > score) {
min = score;
}
}
//输出部分
System.out.println("sum = " + sum);
System.out.println("average = " + average);
System.out.println("max = " + max);
System.out.println("min = " + min);
}
}
(二)讲解知识点
1、一维数组定义
(1)语法格式
数组类型[] 数组名 = new 数组类型[数组长度];
数组类型[] 数组名 = new 数组类型[]{数组元素0, 数组元素1, ...};
数组类型[] 数组名 = {数组元素0, 数组元素1, ...};
(2 )数组定义示例
int[] ids = new int[100];
String[] names = new String[] {"洪艳林", "陈燕文", "郑晓琳", "唐竹龙"};
Object[] student = {1, "张三丰", "男", 20, "15892924560", "maths007@163.com"};
(3)数组定义的内存变化图
声明数组变量,此时数组变量还是null,赋值实例化数组之后,才会给它分配内存空间
2、不同类型数组元素默认初始值
3、避免数组下标越界异常
每个数组的索引(下标)都有一个范围,即[0, length - 1]。在访问数组的元素时,索引不能超出这个范围,否则程序会报错(ArrayIndexOutOfBoundsException,即数组角标越界异常)。
4、避免数组空指针异常
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现错误(NullPointerException,即空指针异常)。