Java程序设计各章习题及其答案(7)

2019-01-26 20:19

数据类型类基于基本数据类型,其中封装了一个基本数据类型的域及与其相关的 操作。

8 Math类用来实现什么功能?设x,y是整型变量,d是双精度型变量,试书写表 达式完成下面的操作: (1)求x的y次方。 (2)求x和y的最小值。 (3)求d取整后的结果。 (4)求d四舍五人后的结果。 (5)求atan(d)的数值。

解;Math类中包含了若干常用的数学运算。 (1)Math.pow(x,y) (2)Math.min(x,y) (3)Math.floor(d) (4)Math.round(d) (5)Math.atan(d)

9、向量与数组有何不同?它们分别适合于什么场合?

解:向量是类似于数组的顺序存储的数据结构,不同之处是向量中的每个元素都是 对象,向量中还封装了一些常用的数据处理功能,因此向量是允许不同类型元素共存的变

长数组。

下面的情况下适合使用向量:

(1)需要处理的对象数目不定:序列中的元素都是对象,或可以表示为对象。 (2)需要将不同类的对象组合成一个数据序列。 (3)需要做频繁的对象序列中元素的插人和删除。 (4)经常需要定位序列中的对象或其他的查找操作。 (5)需要在不同的类之间传递大量的数据。

(6)Vector类的方法相对于数组要多一些,但是使用这个类也有一定的局限性,例如

其中的对象不能是简单数据类型等。 一般在下面的情况下,使用数组比较合适 (1) 序列中的元素是简单数据类型的数据

(2) 序列中的元素数目相对固定,插入、删除和查找 操作较少。 10、什么是排序?你了解几种排序算法?它们各自有什么优缺点?分别适合在什么情况下使用? 解:排序是把一个数据序列中的各个数据元素,根据其中所包含的某个关键值进行 从大到小或从小到大排列的过程。排序的目的大都是为了方便对数据序列中的元素进行 查找。 常见的排序算法有:冒泡排序、选择排序、插入排序、桶排序和快速排序等。

其中冒泡排序的算法和代码比较简单,适合在待排序的数据元素数目不太多的情况,

32

其算法复杂度为n。选择排序和插入排序的算法代价为n,运算量大大减少,其中选择 排序所需的操作比较多,移动操作少,而插入排序的比较操作少,移动操作多,综合起来二 者大体不相上下。桶排序的算法复杂性为n,运算量最小,但是代价是占用较多的内存空间(10n)。快速排序的算法复杂性也是n。需要注意的是,这里算法复杂性指出的运算 量都是在最坏情况下的运算量,实际使用时可以根据需要排序的数据元素自身的特点,如

是否已经部分有序,来选择相应的算法。

第八章 习题及思考题

1. 什么是异常?简述Java的异常处理机制。

答:异常是当程序运行的时候,由于各种不可避免的原因而产生的错误。例如除数为零、文件找不到而无法读写、网点连接不上等等。

Java程序把运行中各种可能出现的错误都看作异常,Java提供的异常情况处理机制叫异常处理。Java 提供了两种不同的异常抛出机制:throws抛出异常和 throw 抛出异常。throws抛出异常又叫间接抛出异常,throw抛出异常又叫直接抛出异常。throws抛出异常和方法说明联系在一起,是针对以下情况:调用的方法抛出了异常、检测到了错误并使用throw语句抛出异常、程序代码有错误从而异常。方法中出现的异常由catch语句捕获,进行处理。

2. 系统定义的异常与用户自定义的异常有何不同?如何使用这两类异常? 答:系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作系统错误甚至是整个系统的瘫痪,所以需要定义异常来特别处理。而用户自定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及是识别并处理,而不至扩散产生更大影响,从而使用户程序更为强健,有更好的容错能力,并使整个系统更加安全稳定。 使用:

(1)声明一个新的异常类,是之以Exception类或其他莫个已经存在的系统异常类或用户异常类为父类。

(2)为新的异常类定义属性和方法,或重载父类的属性和方法,使这些属性和方法能过体现该类所对应的错误的信息。

只有定义可以场类。系统才能够识别特定的运行错误,才能够及时的控制和处理运行错误,所以定义足够多的异常类是构件一个稳定完善的应用系统的重要基础之一。

3.输入并运行下面的程序: class testTry {

public static void main(String args[ ]) {

Proc(0); Proc(100); Proc(1); }

static void Proc(int num) { try {

System.out.println(\异常处理测试 ***\ System.out.println(\ int sum = 100/num; int array[ ]={0,1,2}; array[num]=sum; }

catch( ArithmeticException e ) {

System.out.println(\被零除:\ }

catch( ArrayIndexOutOfBoundsException e ) {

System.out.println(\数组越界:\ }

finally {

System.out.println(\ } } }

问题:在java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用? 运行结果:

***异常处理测试 *** num=0

被零除:java.lang.ArithmeticException: / by zero End!

***异常处理测试 *** num=100

数组越界:java.lang.ArrayIndexOutOfBoundsException: 100 End!

***异常处理测试 *** num=1 End!

问题答案:

Try程序块作用: 说明抛出异常的部位,该部位含有抛出异常的语句。

Catch程序块作用:接抛出的异常类进行捕获,并进行处理。当catch前面的try 块中发生了一个异常,try-catch语句就会自动在try块后面的各个catch块中,找出与该异常类相匹配的参数。当参数符合以下3个条件之一时,就认为这个参数与产生的异常相匹配: 参数与产生的异常属于一个类; 参数是产生的异常的父类;

参数是一个接口时,产生的异常实现了这一接口。

当产生的异常找到了第一个与之相匹配的参数时,就执行包含这一参数的catch语句中的java代码。

Finally程序快作用:finally语句可以说是为异常处理事件提供的一个清理机制,一般是用来关闭文件或释放其他的系统资源。作为try-catch-finally结构的一部分,可以没有 finally语句,如果存在finally语句,不论try块中是否发生了异常,是否执行过catch 语句,都要执行finally语句。

4.编写从键盘读入10个字符放入一个字符数组,并在屏幕上显示它们的程序。请处理数组

越界异常.

import java.io.*; class ReadChar {

public static void main(String args[])throws IOException {

char buf[]=new char[10]; //10字节的数组用于存字符串,buf为局部变量, System.out.println(\ char ch;

for(int i=0;i<10;i++)

buf[i]=(char)System.in.read(); //从键盘读一个数字串保存于buf中,它引发异常

for(int j=0;j<10;j++)

System.out.print(buf[j]+\ } }

运行结果:

D:\\java\\pro>java ReadChar Input 10 char! uiwryiufys

u i w r y i u f y s

第九章 习题及思考题

1、编一个应用程序,按行顺序地读取一个可读文件的内容。 解:import java.io.*; public class ReadFile

{ public static void main(String args[]) { String s;

FileInputStream is; InputStreamReader ir; BufferedReader in; try

{ is=new FileInputStream(\ ir=new InputStreamReader(is); in=new BufferedReader(ir); while((s=in.readLine())!=null) System.out.println(\ }

catch(FileNotFoundException e)

{ System.out.println(\ System.exit(-2); }

catch(IOException e)

{ System.out.println(\ System.exit(-3); } } }

2、把Hashtable存放的信息输出到磁盘文件中,并再从中读进Hashtable. import java.io.*;

import java.util.Hashtable;

public class ObjectIOClass extends implements Serializable{ public static void main(String args[]) throws Exception {

Hashtable ht=new Hashtable(); //建立Hashtable 的对象实例 DataInputStream dis=new DataInputStream(System.in); //建立DataInputStream对象,并且与//标准输入对象连接。

String st_no=dis.readLine(); //从标准输入读一行存入st_no String st_rec=dis.readLine(); //从标准输入读一行存入st_rec

ht.put(st_no,st_rec); //st_no作关键字,st_rec为Hashtable保存的对象,存入ht

System.out.println(ht);

String st_no1=dis.readLine(); //从标准输入读一行存入st_no1

if (ht.containsKey(st_no1)) //如Hashtable对象中有st_no1,打印对应的对象 System.out.println(ht.get(s3)); else System.out.println(\

ObjectReadWrite my_object=new ObjectReadWrite (); //建立文件对象 my_object.write(ht); //如ht对象输出到输出源 my_object.read(); //从输入源读入对象 }}

public class ObjectReadWrite {

static File object_file=new File(\public static void write(Hashtable ht ) { try{

//建立FileOutputStream对象,并且与文件对象object_file 连接 FileOutputStream fos=new FileOutputStream(object_file); // 建立ObjectOutputStream对象,并且与文件对象fos连接 ObjectOutputStream oos=new ObjectOutputStream ( fos);

oos.writeObject(ht); //Hashtable对象内容写入输出文件中 //o1.flush(); oos.close();

} catch(Exception e){}; }

public static void read(){ //从对象输入文件中读对象 try{


Java程序设计各章习题及其答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年中考物理猜题押题:估测题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: