java实验八理论加实践作业

先写理论后写实践作业,

理论作业

1、下列选项中哪个不是异常?

在这里插入图片描述
选:D

2、对于try{…}catch子句的排列方式,下列正确的一项

在这里插入图片描述
选:A

3、以下对异常描述正确的是:

在这里插入图片描述
答案:C

4、当方法遇到异常又不知如何处理,下列哪种说法是正确的

在这里插入图片描述
选:B

5、下列关于必检异常或非必检异常描述正确的是:

在这里插入图片描述
选:b

6、自定义异常类时,可以继承的类是

在这里插入图片描述
选:C

7、说明Throw和Throws的作用及它们的联系和区别

区别一:throw是语句抛出一个异常;throws是方法抛出的一个异常。
在throws中,[throws<异常类>],其中:异常类可以声明多个,用逗号分割
throw语法:throw<异常对象>,在方法声明1中,添加throws子句表示该方法抛出异常。
区别二:throws可以单独使用,但throw不能
区别三:throw要么1try-catch-finally语句配套使用,要么与throws配套使用

8、下列代码运行的结果是:

package  exception;
public  class  Demo06  {
    
    
    public  static  void  main(String[]  args)  {
    
    
        System.out.println(func());
    }

    public  static  int  func(){
    
    
        int  a  =  10;
        try{
    
    
            System.out.println("try中的代码块");
            return  a  +=  10;
        }catch  (Exception  e){
    
    
            System.out.println("catch中的代码块");
        }finally  {
    
    
            System.out.println("finally中的代码块");
            if(a  >  10){
    
    
                System.out.println("a  >  10,"+"a="+a);
            }
        }
        return  a  +=  50;
    }
}

try中的代码块
finally中的代码块
a > 10,a=20
20

9、阅读下列代码,找出其中的错误更正

import  java.io.*;
import  java.util.Scanner;

class  Father{
    
    
    void  f()throws  IntException{
    
    //①
        throw  new  IntException("");
    }
}
class  Son  extends  Father{
    
    //①
    void  f()throws  Exception{
    
    
        throw  new  Exception("");
    }
}
public  class  Test{
    
    
    public  static  void  main(String  args[]){
    
    
        Son  s=new  Son();
        try{
    
    
                s.f();
        }
        System.out.println("");//③
        catch  (Exception  e1){
    
    //②
            System.out.println(e1);
        }
        catch(IntException  e){
    
    //②
            System.out.println(e);
        }
        finally  {
    
    
            System.out.println("乐了乐了");
        }
        System.out.println("看看结果吧");
        }
    }
class  IntException  extends  Exception{
    
    
    IntException(String  message){
    
    
        super(message);
    }
}

回答:子类不能给父类抛出更多异常,try…catch要连着用,删除代码//③。先catch子类异常,在catch父类异常。

10、写一个方法void triangle(int a,int b,int c),判断三个

写一个方法void triangle(int a,int b,int c),判断三个参数是否能构成一个直角三角形, 如果不能则抛出异常IllegalArgumentException, 显示异常信息a,b,c "不能构成直角三角形,如果可以构成则显示该直角三角形面积, 在主方法中得到命令行输入的三个整数。调用此方法,并捕获异常。

package com.company;

import java.util.Arrays;
import java.util.Scanner;


class Main{
    
    
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        try {
    
    
            triangle(a,b,c);
        }catch (IllegalArgumentException e){
    
    
            String message = e.getMessage();
            System.out.println(message);
        }
    }

    public static void triangle(int a,int b,int c){
    
    
        int[] array = new int[3];
        array[0] = a;
        array[1] = b;
        array[2] = c;
        Arrays.sort(array);
        if (array[0]*array[0]+array[1]*array[1] == array[2]*array[2]){
    
    
            //可以构成直角三角形
            System.out.println("直角三角形面积"+0.5*array[0]*array[1]);
        }else {
    
    
            throw new IllegalArgumentException("不能构成直角三角形");
        }
    }
}

class IllegalArgumentException extends RuntimeException{
    
    
    public IllegalArgumentException() {
    
    
        super();
    }

    public IllegalArgumentException(String message) {
    
    
        super(message);
    }
}

实验作业

1、计算器输入异常处理

有两个java文件,一个叫做Numop.java,另一个叫做Main.java
在这里插入图片描述

package com.company;

import java.text.DecimalFormat;

public class NumOP {
    
    
    public static void add(int a,int b){
    
    
        System.out.println(a+"+"+b+"="+(a+b));
    }
    public static void substract(int a,int b){
    
    
        System.out.println(a+"-"+b+"="+(a-b));
    }
    public static void multiply(int a,int b){
    
    
        System.out.println(a+"*"+b+"="+(a*b));
    }
    public static void divide(int a,int b){
    
    
        float c = (float) a;
        DecimalFormat df = new DecimalFormat("0.00");
        String result = df.format(c/b);
        System.out.println(a+"/"+b+"="+result);
    }

}

Main.java

package com.company;

import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;


class Main{
    
    
    public static void main(String[] args) {
    
    
        System.out.println("输入两个参数请用空格隔开");
        Scanner sc = new Scanner(System.in);
        int a,b;
        try{
    
    
            a = sc.nextInt();
            b = sc.nextInt();

        }catch (InputMismatchException exception){
    
    
            System.out.println("请输入整数");
            return;
        }
        NumOP.add(a,b);
        NumOP.substract(a,b);
        NumOP.multiply(a,b);
        NumOP.divide(a,b);
    }
}


2、捕获异常,抛出异常

在这里插入图片描述

第二题一共四个java文件,分别是

OneException
TwoException
ThrowExceptionApp
Main

其中OneException.java

package com.company;

public class OneExeption extends Exception{
    
    
    public OneExeption(){
    
    
        super();
    }
    public OneExeption(String message){
    
    
        super(message);
    }
}

TwoException.java

package com.company;

public class TwoException extends Exception{
    
    
    public TwoException(){
    
    
        super();
    }
    public TwoException(String message){
    
    
        super(message);
    }
}

ThrowExceptionApp.java

package com.company;

public class ThrowExceptioinApp {
    
    
    public static void g() throws OneExeption{
    
    
        throw new OneExeption("g抛出的异常");
    }
    public static void f() throws TwoException{
    
    
        try{
    
    
             g();
        }catch (OneExeption e){
    
    
            String message = e.getMessage();
            System.out.println(message);
            throw new TwoException("f 抛出的异常");
        }
    }
}

Main.java

package com.company;

import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;

import static com.company.ThrowExceptioinApp.f;


class Main{
    
    
    public static void main(String[] args) {
    
    
        try{
    
    
            f();
        }catch(TwoException e){
    
    
            String message = e.getMessage();
            System.out.println(message);
        }
    }
}


3、处理学生成绩

在这里插入图片描述
一个main文件
Main.java

package com.company;


import java.io.CharArrayReader;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;

import static com.company.ThrowExceptioinApp.f;


class Main{
    
    
    public static void main(String[] args) {
    
    
        try{
    
    
            int[] ints = inputScore();
            if(ints != null){
    
    
                Arrays.sort(ints);
                System.out.println(Arrays.toString(ints));
            }
        }catch(RuntimeException e){
    
    
            String message = e.getMessage();
            System.out.println(message);
        }
    }

    public static int[] inputScore() throws RuntimeException{
    
    
        Scanner sc = new Scanner(System.in);
        int i = 0;
        int[] arr = new int[10];
        for(i =0;i<10;i++){
    
    
            int score;
            try{
    
    
                score = sc.nextInt();
                if(score == -1){
    
    
                    break;
                }
            }catch(InputMismatchException e){
    
    
                System.out.println("Please input integer:");
                return null;
            }finally {
    
    
                if(i<10){
    
    
                    System.out.println("You input " + (i+1)+"student score!");
                }
            }
            arr[i] = score;
            i++;
        }
        if(i<9){
    
    
            throw new RuntimeException("please input at least 10 students score");
        }
        return arr;
    }
}


4、十六进制转换异常

在这里插入图片描述
两个java文件
HexFormatException .java

package com.company;

public class HexFormatException extends RuntimeException{
    
    
    public HexFormatException(){
    
    
        super();
    }
    public HexFormatException(String message){
    
    
        super(message);
    }
}

Main.java

package com.company;


import java.io.CharArrayReader;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;

import static com.company.ThrowExceptioinApp.f;


class Main{
    
    
    public static void main(String[] args){
    
    
        System.out.println("Please a hex number:");
        Scanner sc = new Scanner(System.in);
        String hex = sc.nextLine();
        try{
    
    
            int dec = hex2dec(hex);
            System.out.println(dec);
        }catch(HexFormatException e){
    
    
            String mess = e.getMessage();
            System.out.println(mess);
        }
    }

    public static int hex2dec(String hStr){
    
    
        try{
    
    
            int decint = Integer.parseInt(hStr,16);
            return decint;
        }catch(NumberFormatException e){
    
    
            throw new HexFormatException("Please input a available hex:");
        }
    }
}


猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/124374311