幕粉一枚
2016-10-05 11:38
编写一程序,从控制台输入一个班学生的某门课程成绩,统计及格人数,不及格人数、平均数。为此设计一个异常类,当输入的成绩小于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)
Java入门第三季
409776 学习 · 4546 问题
相似问题
回答 5
回答 2