package cn.ysm.homework;
import java.util.Scanner;
/**
* 3. 编写一个计算N个学生分数平均分的程序。
* 程序应该提示用户输入N的值,如何必须输入所有N个学生分数。
* 如果用户输入的分数是一个负数,则应该抛出一个异常并捕获,提示“分数必须是正数或者0”。
* 并提示用户再次输入该分数。
* @author lenovo
*
*/
public class HomeWork03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生数:");
int n = scanner.nextInt();
System.out.println("请分别输入对应成绩:");
Source2 s = new Source2();
//总分初始化
double sum = 0;
//平均分初始化
double ave = 0;
//分数数组初始化
double[] source = new double[n];
//数组赋值
for(int i=0;i<n;i++){
//控制台输入
source[i] = scanner.nextDouble();
//判断是否异常
try {
s.SetSource(source[i]);
} catch (IllegalSourceException e) {
// TODO Auto-generated catch block
System.out.println("请重新输入该分数!");
e.printStackTrace();
//重新输入该元素数值
i--;
}
}
//遍历数组元素并求均值
for(int i=0;i<n;i++){
sum+=source[i];
}
ave = sum/n;
System.out.println("平均分为:"+ave);
}
}
//判断分数是否异常
class Source2 {
Source2(){
}
void SetSource(double s) throws IllegalSourceException{
if(s<0){
throw new IllegalSourceException("分数必须是正数或者0");
}
}
}
//自定义异常
class IllegalSourceException extends Exception{
public IllegalSourceException(){
}
public IllegalSourceException(String s){
super(s);
}
}