编写一程序,从控制台输入一个班学生的某门课程成绩,统计及格人数,不及格人数、平均数。为此设计一个异常类,当输入的成绩小于0分或大于100分时,抛出异常,程序中捕捉这个异常,并显示相应的提示。
public class Test3 {
public static void main(String[] args) {
int proNum = 5;//班级里面有20人
int jigeIndex =0;
int bujigeIndex = 0;
int avg =0;
int sum =0;
Scanner input = new Scanner(System.in);
System.out.println("***请输入班级学生的成绩***");
for(int i = 1;i<= proNum;i++){
System.out.print("请输入第"+i+"个学生的成绩:");
int chengji = input.nextInt();
System.out.println("第"+i+"个的学生的成绩为:"+chengji);
if(chengji>=60){
jigeIndex ++;
}else{
bujigeIndex++;
}
try {
if(chengji<0 || chengji>100){
throw new RuntimeException("分数不正确");
}
} catch (Exception e) {
e.printStackTrace();
i--;
}
sum +=chengji;
avg = sum/proNum;
}
System.out.println("及格人数为:"+jigeIndex);
System.out.println("不及格人数为:"+bujigeIndex);
System.out.println("平均分为:"+avg);
}
}
=====================================================
这样是不是你要的结果??????
大概就这样,简单的数学运算
package page; import java.util.Scanner; public class Test { public static void main(String[] args) { final int M = 3; // 人数,三个人 Test test = new Test(); test.calculate(M); } public void calculate(final int M) { double sum = 0.0; int k = 0; for(int i = 0; i < M; i++) { System.out.print("学生 " + (i + 1) + " - "); int score = this.in(); sum += score; if (score > 60) k++; // 及格 } System.out.println("-----------------------"); System.out.println("总人数:" + M); System.out.println("及格数:" + k); System.out.println("不及格:" + (M - k)); System.out.println("平均分:" + (sum / M)); } /** * throws 抛出异常类型 */ public void check(int n) throws NumberException { /** * 自定义异常处理, 不符合条件就抛出异常 */ if (n < 0 || n > 100) { throw new NumberException("成绩必须在0-100"); } } /** * 输入成绩 */ public int in() { System.out.println("输入成绩:"); Scanner input = new Scanner(System.in); try { int number = input.nextInt(); /** * 交给自定义异常处理 */ this.check(number); /** * 没有抛出异常 */ System.out.println("你输入的数据通过检测"); return number; } catch (NumberException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return 0; } }
测试结果:
学生 1 - 输入成绩: 55 你输入的数据通过检测 学生 2 - 输入成绩: 66 你输入的数据通过检测 学生 3 - 输入成绩: 77 你输入的数据通过检测 ----------------------- 总人数:3 及格数:2 不及格:1 平均分:66.0
谢谢,看完有思路了
先创建一个异常类:
就叫它为:NumberException
package page; public class NumberException extends Exception { public NumberException(String Msg) { System.out.println("错误:" + Msg); } }
然后在主文件中使用自定义的异常类:
package page; import java.util.Scanner; public class Test { public static void main(String[] args) { Test test = new Test(); test.in(); } /** * throws 抛出异常类型 */ public void check(int n) throws NumberException { /** * 自定义异常处理, 不符合条件就抛出异常 */ if (n < 0 || n > 100) { throw new NumberException("成绩必须在0-100"); } } /** * 输入成绩 */ public void in() { System.out.println("输入成绩:"); Scanner input = new Scanner(System.in); try { int number = input.nextInt(); /** * 交给自定义异常处理 */ this.check(number); /** * 没有抛出异常 */ System.out.println("你输入的数据通过检测"); } catch (NumberException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
测试结果:
输入成绩: 20 你输入的数据通过检测
输入成绩: 120 错误:成绩必须在0-100 page.NumberException at page.Test.check(Test.java:22) at page.Test.in(Test.java:38) at page.Test.main(Test.java:11)