JAVA各章习题及答案 下载本文

catch(ArrayIndexOutOfBoundsException e){// 捕捉数组下标越界异常并处理 System.out.println(\数组下标越界!\ } } }

【运行结果】

请输入两个整数: 20 0 出现被0除的情况! 数组下标越界!

4.编写一个由throw抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。 【编程分析】

当在程序出现异常之前利用throw语句来抛出异常,可以做到防患于未然,提前进行异常处理,将由被动处理异常转变为主动防止异常发生。 【参考程序】

import java.io.*;

public class X7_3_4 { public static void main(String args[]) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.println(\请输入两个整数:\ int a = Integer.parseInt( br.readLine()); int b = Integer.parseInt( br.readLine()); try{ if(b==0) throw new ArithmeticException(\抛出算术异常\ System.out.println(a/b); } catch(ArithmeticException e){ e.printStackTrace(); System.out.println(\出现被0除的情况!\ } int c[] ={1, 2, 3, 4}, sum = 0; try{ for(int i = 0; i<5; i++) { if(i >= 4) throw new ArrayIndexOutOfBoundsException(\抛出数组下标越界异常\ sum += c[i]; System.out.println( \ } } catch(ArrayIndexOutOfBoundsException e){

45

e.printStackTrace(); System.out.println(\数组下标越界!\ } } }

【运行结果】 请输入两个整数:

10 0 java.lang.ArithmeticException: 抛出算术异常 at X7_3_4.main(C9_4.java:11) 出现被0除的情况! sum = 1 sum = 3 sum = 6 sum = 10

java.lang.ArrayIndexOutOfBoundsException: 抛出数组下标越界异常 at X7_3_4.main(X7_3_4.java:22) 数组下标越界!

5.自定义两个异常类NumberTooBigException和NumberTooSmallException,在其中定义各自的构造方法,分别打印输出“发生数字太大异常”和“发生数字太小异常”。然后在主类中定义一个带throws的方法numberException(int x),当x>100时通过throw抛出NumberTooBigException异常,当x<0时通过throw抛出NumberTooSmallException异常;最后在main()方法中调用该方法,实现从键盘中输入一个整数,如果输入的是负数,引发NumberTooSmallException异常,如果输入的数大于100,引发。NumberTooBigException异常,否则输出“没有发生异常”。

【编程分析】本题主要考察自定义异常的方法。

第一步:定义异常类NumberTooBigException class NumberTooBigException extends Exception{ NumberTooBigException(){ super(\发生数字太大异常 \ } }

第二步:定义异常类NumberTooSmallException class NumberTooSmallException extends Exception{ NumberTooSmallException(){ super(\发生数字太小异常\ } }

第三步:在主类X7_3_5中定义numberException()方法。 public static void numberException(int x)

throws NumberTooBigException, NumberTooSmallException{ if(x>100) throw new NumberTooBigException();

46

else if (x<0) throw new NumberTooSmallException(); else System.out.println(\没有异常发生\; }

第四步:在main()方法中调用numberException()方法并捕捉和处理由此方法引起的异常。

【参考程序】

import java.io.*;

public class X7_3_5 { public static void main(String args[]) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.print(\请输入一个整数:\ int a = Integer.parseInt( br.readLine()); try{ numberException(a); }catch(NumberTooBigException e){ e.printStackTrace(); }catch(NumberTooSmallException e){ e.printStackTrace(); } } public static void numberException(int x) throws NumberTooBigException, NumberTooSmallException{

if(x>100) throw new NumberTooBigException(); else if (x<0) throw new NumberTooSmallException(); else System.out.println(\没有异常发生\; } }

class NumberTooBigException extends Exception{ NumberTooBigException(){ super(\发生数字太大异常 \ } }

class NumberTooSmallException extends Exception{ NumberTooSmallException(){ super(\发生数字太小异常\ } }

【运行结果】

47

? 当输入的数值大于100时,运行结果为: 请输入一个整数:120

NumberTooBigException: 发生数字太大异常

at X7_3_5.numberException(X7_3_5.java:18) at X7_3_5.main(X7_3_5.java:9) ? 当输入的数值小于0时,运行结果为: 请输入一个整数:-10

NumberTooSmallException: 发生数字太小异常

at X7_3_5.numberException(X7_3_5.java:20) at X7_3_5.main(X7_3_5.java:9)

? 当输入的数值在0~100之间时,运行结果为: 请输入一个整数:25 没有异常发生

第8章

一、选择题

1.下列数据流中,属于输入流的一项是( B )。

A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流 【解析】输入流是指从外围设备流向主机(包括CPU和内存)的数据流。 2.Java语言提供处理不同类型流的类所在的包是( D )。

A.java.sql B.java.util C.java.net D.java.io 【解析】java.io 包是Java语言提供处理不同类型流的类所在的包。 3.不属于java.io包中的接口的是( C )。

A.DataInput B.DataOutput C.DataInputStream D.ObjectInput 【解析】DataInputStream是java.io包中的一个类,其他三个则是java.io包中的接口。 4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的一项填入―//x‖处,完成要求的功能( B )。

import java.io.*; public class X8_1_4 { public static void main(String[] args) { char ch; try{ //x System.out.println(ch); } catch(IOException e){ e.printStackTrace(); } } }

A.ch = System.in.read(); B.ch = (char)System.in.read(); C.ch = (char)System.in.readln(); D.ch = (int)System.in.read();

【解析】System.in.read()方法返回的是字符对应的Unicode码,即返回的类型是int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它赋值给ch变量。另外,

48