第六章编程题作业

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("------------");
	}
}
---------------------------

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/108819303