EduCoder Java语言之异常处理类

第1关:了解异常 - ID检测

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  1. 利用throw关键字声明输入可能出现的异常。
  2. 如果输入的ID格式正确,则输出ID格式正确:+ ID内容;反之输出ID长度应为7

测试说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是测试样例:

测试输入:1234567 测试输出:ID格式正确:1234567

测试输入:vddft56657 测试输出:ID长度应为7

package step1;

import java.util.Scanner;

public class ThrowException {
    public static void function(String id) {  //利用throws关键字声明该方法可能出现异常IllegalArgumentException
        /********** Begin *********/
        if (id.length() == 7) {
            //输出ID合法时的语句
            System.out.println("ID格式正确:1234567");
        } else {
            //利用throw关键字抛出异常IllegalArgumentException
            throw new IllegalArgumentException();
        }
        /********** End *********/
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String id = sc.nextLine();
        try {
            function(id);
        } catch (IllegalArgumentException e) {
            /********** Begin *********/
            //输出ID不合法时的语句

            System.out.println("ID长度应为7");
            /********** End *********/
        }
    }
}

 

第2关:异常的捕获与处理 - 文本统计

任务描述

本关的任务是通过异常捕获的方式,完成一个程序,实现输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数的功能。

编程要求

本关的编程要求是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  1. 从命令行输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  2. 输出格式参见测试样例。

测试说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是测试样例:

测试输入:abc123### 测试输出:letter=3,space=0,number=3,other=3

测试输入:777783 34 @ %( sds 测试输出:letter=3,space=4,number=8,other=3

package step2;

import java.awt.*;
import java.io.*;

public class CatchException {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String str;
        /********** Begin *********/
        //补全try/catch块,异常类型为IOException
        try {
            str = reader.readLine();
            int letter = 0;
            int space = 0;
            int number = 0;
            int other = 0;
            for (int i = 0; i < str.length(); i++) {
                if (Character.isLetter(str.charAt(i)))
                    letter++;
                else if (Character.isSpaceChar(str.charAt(i)))
                    space++;
                else if (Character.isDigit(str.charAt(i)))
                    number++;
                else
                    other++;
            }
            System.out.println("letter=" + letter + ",space=" + space + ",number=" + number + ",other=" + other);
        } catch (IOException e) {
            System.out.print(e);
        }
        /********** End *********/
    }
}

第3关:自定义异常 - 正负数

任务描述

本关的任务是通过用户自定义异常的机制,判断一个数是否合法,我们定义为若该数为正数,则合法;反之则不合法。

编程要求

本关的编程要求是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  1. num变量为命令行输入的int型数据,若num为正数,输出The number you entered is: + num;反之捕获该异常。

测试说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是测试样例:

样例输入:-60 样例输出:chapter8.step3.MyException: Number cannot be negative!

样例输入:60 样例输出:The number you entered is: 60

package step3;

import java.util.Scanner;

class MyException extends Exception {
    public MyException(String m) {
        super(m);
    }
}

public class MyExceptionTest {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
            /********** Begin *********/
            if (num > 0) {
                System.out.println("The number you entered is: " + num);
            } else {
                throw new MyException("Number cannot be negative!");
            }

            /********** End *********/
        } catch (MyException e) {
            System.out.print(e);
        }
    }
}

 

上一篇:【EduCoder答案】Python控制结构(二)※


下一篇:Educoder - Java入门 - 循环结构进阶各关卡题目总结