6-3 Java异常处理
设有一个整数数组a[], a有10个元素,其值依次为0到9。
从键盘输入整数i的值,求a[i]的倒数。
注意处理各种异常。发生异常后,根据不同的异常,输出警告。
提示:
需要考虑InputMismatchException、ArrayIndexOutOfBoundsException、ArithmeticException等多种异常。
裁判测试程序样例:
import java.util.Scanner;
import java.util.InputMismatchException;
public class Main {
public static void main(String[] args) {
int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
/* 请在这里填写答案 */
}
}
输入格式:
先输入一个整数n,表示有n组数据。
此后有n行,每行有一个整数i。
输出格式
正常情况下,输出1/a[i]的值(整数形式)。
如果发生InputMismatchException异常,输出“catch a InputMismatchException”。
如果发生ArrayIndexOutOfBoundsException异常,输出“catch a ArrayIndexOutOfBoundsException”。
如果发生ArithmeticException异常,输出“catch a ArithmeticException”。
输入样例:
4
1
10
0
a
输出样例:
1
catch a ArrayIndexOutOfBoundsException
catch a ArithmeticException
catch a InputMismatchException
Scanner sc = new Scanner(System.in);
int m=0;
try{
int n=sc.nextInt();
m=n;
}catch(InputMismatchException ex){
System.out.println("catch a InputMismatchException");
System.exit(0);//结束程序
}
for(int i=0;i<m;i++){
try{
int x=sc.nextInt();
int result=1/a[x];
System.out.println(result);
}catch(InputMismatchException ex){
System.out.println("catch a InputMismatchException");
sc.nextLine();
}catch(ArrayIndexOutOfBoundsException ex){
System.out.println("catch a ArrayIndexOutOfBoundsException");
}catch(ArithmeticException ex){
System.out.println("catch a ArithmeticException");
}
}
1.Scanner类在进行混合输入的时候,nextInt()\nextDouble()等方法仅读取他们的输入,即直到遇到非数字字符,但不会消耗掉输入缓冲区中的换行符。这个换行符会留在输入缓冲区中,等待下一步操作。现在,如果你紧接着用nextLine()方法,它会立即读取并返回这个换行符。此时需要InputMismatchExcepion异常(通常在使用Scanner类读取用户输入时发生,特别是当程序期望的输入数据类型与用户实际输入的数据类型不匹配时)