1. 编写程序接收用户输入分数信息,如果分数在0—100之间,输出成绩.如果成绩不在该范围内,抛出异常信息,提示分数必须在0—100之间.
要求:使用自定义异常实现.
----------------------------
public class InputScore {
public static void main(String[] args) {
Student st1 = new Student("张三",101);
}
}
class Student{
private String name;
private int score;
public Student() {
}
public Student(String name,int score) {
if(score<0||score>100) {
throw new InputErr("分数必须是0-100之间的数");
}
this.name = name;
this.score = score;
}
}
class InputErr extends RuntimeException{
public InputErr() {
}
public InputErr(String str) {
System.out.print(str);
}
}
----------------------------
2. 写一个方法void isTriangle(int a,int b,int c),判断三个参数是否能构成一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息 “a,b,c不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数, 调用此方法,并捕获异常.
---------------------------
import java.util.Scanner;
public class Triangle {
private int a,b,c;
public Triangle() {
}
public Triangle(int a,int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
void isTriangle(int a,int b,int c) {
if(diffIsTr(a, b, c)&&addIsTr(a, b, c)) {
System.out.printf("三角形的三边分别为:a-%s,b-%s,c-%s",a,b,c);
}else {
throw new IllegalArgumentException("a,b,c不能构成三角形");
}
}
// 两边之差小于第三边
static boolean diffIsTr(int a,int b,int c) {
if(Math.abs(a-b)<c&&Math.abs(a-c)<b&&Math.abs(b-c)<a) {
return true;
}
return false;
}
// 两边之和大于第三边
static boolean addIsTr(int a,int b,int c) {
if(a+b>c&&a+c>b&&b+c>a) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入a:");
int a = scanner.nextInt();
System.out.print("请输入b:");
int b = scanner.nextInt();
System.out.print("请输入c:");
int c = scanner.nextInt();
Triangle t1 = new Triangle(a,b,c);
t1.isTriangle(a, b, c);
}
}
---------------------------
3. 编写一个计算N个学生分数平均分的程序.程序应该提示用户输入N的值,如何必须输入所有N个学生分数.如果用户输入的分数是一个负数,则应该抛出一个异常
并捕获,提示“分数必须是正数或者0”.并提示用户再次输入该分数.
---------------------------
import java.util.Scanner;
public class Students {
private int score;
private String name;
public Students() {
}
public Students(int score) {
if(score < 0) {
throw new ScoreIputErr("分数必须是正数或者0");
}
this.score = score;
}
public Students(String name,int score) {
if(score < 0) {
throw new ScoreIputErr("分数必须是正数或者0");
}
this.score = score;
this.name = name;
}
public static void main(String[] args) {
int sum = 0; // 统计总分
System.out.print("请先输入需要统计平均分学生的人数:");
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
Students[] students = new Students[N]; // 创建一个学生类的数组
for(int i=0;i<N;i++) {
// 捕获抛出的异常
try {
System.out.printf("请输入第%s个学生的成绩:",i+1);
int score = scanner.nextInt();
students[i] = new Students(score);
sum += score;
}catch(ScoreIputErr e) {
// e.printStackTrace();
System.out.println("-------->请重新输入<--------:");
i--; // 使可以重新输入此学生的分数
}
}
int avg = sum / N; // 求平均分
System.out.printf("平均分数为:%s",avg);
}
}
// 自定义异常类,用于抛出异常
class ScoreIputErr extends RuntimeException{
public ScoreIputErr() {
}
public ScoreIputErr(String str) {
System.out.println("------------");
System.out.println(str);
System.out.println("------------");
}
}
---------------------------