java基础训练(3)
文章目录
- 统计学生的成绩
- 1) 无范围的代码实现:
- 运行结果如下:
- 2)范围内的代码实现:
- 利用增强for语句循环来遍历数组
- 每个数组的索引(下标)都有一个范围,即[0,length - 1]。在访问数组元素时,索引不能超出这个范围,否则程序就会报错(ArrayIndexOutOfBoundsException,即数组角标越界异常),所以应删除“scores[10] = 78;”
- 在使用变量引用一个数组时,变量必须只想一个有效的数组对象,而该变量的值为null,意味着没有指向任何数组,这时该元素访问数组元素就会出现错误(NullPointerException,即空指针异常),所以该改成“ new double[10] ”
- 成绩在给定的范围内的正确代码如下:
统计学生的成绩
- 统计一组学生成绩的总分、平均分、最高分和最低分
- 假如一组学生100个人,利用前面所学的知识,程序就需要声明10个变量score1,score2,…,score100,来记住每位的成绩,再计算平均分
- 如果用平常的数学计算平均值得方法,会显得特别麻烦。所以我们使用一数组来保存多个成绩,通过数组的索引或下标来访问各个学生的成绩,再使用循环来处理。
1) 无范围的代码实现:
运行结果如下:
2)范围内的代码实现:
利用增强for语句循环来遍历数组
每个数组的索引(下标)都有一个范围,即[0,length - 1]。在访问数组元素时,索引不能超出这个范围,否则程序就会报错(ArrayIndexOutOfBoundsException,即数组角标越界异常),所以应删除“scores[10] = 78;”
在使用变量引用一个数组时,变量必须只想一个有效的数组对象,而该变量的值为null,意味着没有指向任何数组,这时该元素访问数组元素就会出现错误(NullPointerException,即空指针异常),所以该改成“ new double[10] ”
成绩在给定的范围内的正确代码如下:
public class Task07_1 {
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 (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);
}
}
- 眼看百遍,不如手敲一遍哦!!!
- 加油!!!
Ziin_: 大神可以问一下吗?如果他显示判断版本失败怎么办