JAVA 输入一个整数表示星期几,输出对应的英文单词。当输入的数据类型不匹配时(如输入的是字符串)会抛出异常,要求捕获该异常,显示提示信息“输入的数据类型不匹配”

第4章
课后习题练习
4.1 输入一个整数表示星期几,输出对应的英文单词。当输入的数据类型不匹配时(如输入的是字符串)会抛出异常,要求捕获该异常,显示提示信息“输入的数据类型不匹配”
4.2 定义二维数组储存m名学生n门功课的成绩,m和n的值及成绩都从键盘输入,然后计算每个同学的平均成绩。要求捕获以下几种异常:
(1)类型不匹配异常,如输入的是字符串等。
(2)输入的成绩不在正常范围内,如成绩>100或成绩<0
(3)计算平均成绩时,要考虑被0除的异常
3.face()方法的功能时求n!,阶乘是byte类型。当n!的值超出byte数据类型的范围时,抛出异常。在主方法中输入n的值,调用face()方法求n!的值。哟啊求风别用以下三种方式进行异常处理:
(1)fact()方法捕获异常
(2)fact()方法声明异常,主方法捕获异常
(3)fact()方法和主方法都声明异常
4.4 自定义异常类TriangleException表示三条边无法构成三角形的异常。在主方法中,输入三个整数,如果能构成三角形则求其周长和面积;如果无法构成三角形则抛出TriangleException异常,要求捕获这个异常,输出信息“输入的三条边不能构成三角形”

public class Week {

	public static void main(String[] args) {
		try {
			int n;
			String day = null;
			Scanner s = new Scanner(System.in);
			System.out.println("请输入想要查询的星期数:");
			n = s.nextInt();
			if (n == 1)
				day = "Monday";
			else if (n == 2)
				day = "Tuesday";
			else if (n == 3)
				day = "Wednesday";
			else if (n == 4)
				day = "Thusday";
			else if (n == 5)
				day = "Friday";
			else if (n == 6)
				day = "Saturday";
			else if (n == 7)
				day = "Sunday";
			else
				throw new OutOfRangeException();
			System.out.print(day);
		} catch (InputMismatchException e) {
			System.out.print("输入类型错误!");
		} catch (OutOfRangeException e) {
			System.out.print("输入数字错误!");
		}
	}
}
class OutOfRangeException extends Exception{
	OutOfRangeException(){
		super("输入类型错误");		
	}
}

4.2

public class Grade {

	public static void main(String[] args) {
		int m,n;
		Double[][] g;
		Scanner s = new Scanner(System.in);
		System.out.print("请输入学生个数和考试科目数:");
		try {
			m = s.nextInt();
			n = s.nextInt();
			if(n == 0)
				throw new ZeroException();
			else {
				g = new Double[m][];
				for(int i = 0;i<m;i++) {
					g[i] = new Double[n + 1];
					g[i][n] = 0.00;
					for(int j = 0;j<n;j++) {
						g[i][j] = s.nextDouble();
						if(g[i][j] <= 100 && g[i][j] >= 0) 
							g[i][n] = g[i][n] + g[i][j];
						else
							throw new OutOfRangeException();
					}
				}
				for(int i = 0;i<m;i++) {
					g[i][n] = g[i][n] / n;
					System.out.print("\n" + "第" + (i + 1) + "个同学的平均成绩为:");
					System.out.printf("%.2f",g[i][n]);
				}
				}
				
		}catch(InputMismatchException e) {
			System.out.print("输入类型有误!");
		}catch(OutOfRangeException e) {
			System.out.print("输入成绩范围有误!");			
		}catch(ZeroException e) {
			System.out.print("无法计算平均成绩!");
		}
	}
}
class OutOfRangeException extends Exception{
	OutOfRangeException(){
		super("输入类型");
	}
}
class ZeroException extends Exception{
	ZeroException(){
		super("0除");
	}	
}

4.3

public class Face {

	int n;
	byte sum = 1;
//	方一:
	void face(int n){
		try {
			this.n = n;
			if(n > 0) {
				for(int i = 1;i <= n;i++)
					sum = (byte) (sum * i);
				if(sum > 0)
				System.out.print("阶乘值为:" + sum);
				else
					throw new OutOfRangeException();
			}else
				throw new MismatchException();
		}catch(OutOfRangeException e) {
			System.out.print("超出byte范围!");
		}catch(MismatchException e) {
			System.out.print("输入数值有误无法计算!");
		}
	}
//	方二,方三的face()方法一样:
//	void face(int n) throws OutOfRangeException,MismatchException{
//			this.n = n;
//			if(n > 0) {
//				for(int i = 1;i <= n;i++)
//					sum = (byte) (sum * i);
//				if(sum > 0)
//				System.out.print("阶乘值为:" + sum);
//				else
//					throw new OutOfRangeException();
//			}else
//				throw new MismatchException();
//	}
	public static void main(String[] args) {
		int n;
		Scanner s = new Scanner(System.in);
		System.out.print("请输入n的值:");
		n = s.nextInt();
		Face f = new Face();
		f.face(n);
		
	}
//	方二:
//	public static void main(String[] args) {
//		int n;
//		Scanner s = new Scanner(System.in);
//		System.out.print("请输入n的值:");
//		n = s.nextInt();
//		Face f = new Face();
//		try {
//			f.face(n);
//		} catch (OutOfRangeException e) {
//			e.printStackTrace();
//		} catch (MismatchException e) {
//			e.printStackTrace();
//		}
//	}
//	方三:
//	public static void main(String[] args) throws OutOfRangeException, MismatchException {
//		int n;
//		Scanner s = new Scanner(System.in);
//		System.out.print("请输入n的值:");
//		n = s.nextInt();
//		Face f = new Face();
//		f.face(n);	
//	}
	
}
class OutOfRangeException extends Exception{
	OutOfRangeException(){		
	}
}
class MismatchException extends Exception{
	MismatchException(){		
	}
}

4.4

public class Triangle {

	public static void main(String[] args) {
		int a,b,c;
		double l,s;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入三边的长度:");
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();
		try {
			if((a + b)> c && (a + c)>b && (b + c)>a) {
				l = a + b + c;
				s = Math.sqrt((l/2 * (l/2 - a) * (l/2 - b) * (l/2 - c)));
				System.out.print("该三角形的周长为:" + l + "\n面积为:" );
				System.out.printf("%.2f",s);
			}
			else 
				throw new TriangleException();			
		}catch(TriangleException e) {
			System.out.print("输入的三条边不能构成三角形");			
		}				
	}
}
class TriangleException extends Exception{
	TriangleException(){
		super("无法构成三角形");
	}
}
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值