第1关:了解异常 - ID检测
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
- 利用
throw
关键字声明输入可能出现的异常。 - 如果输入的
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关:异常的捕获与处理 - 文本统计
任务描述
本关的任务是通过异常捕获的方式,完成一个程序,实现输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数的功能。
编程要求
本关的编程要求是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
- 从命令行输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 输出格式参见测试样例。
测试说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
以下是测试样例:
测试输入: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关:自定义异常 - 正负数
任务描述
本关的任务是通过用户自定义异常的机制,判断一个数是否合法,我们定义为若该数为正数,则合法;反之则不合法。
编程要求
本关的编程要求是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
-
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);
}
}
}