Java7课后习题(2)

2019-05-24 18:00

答案:

一、选择题: 1~5: CABDB 6~10:BCBAC 11~13:D AA

二、填空题: 1. 文档对象模型

2. 字节流、字符流、文件流、对象流、管道流 3. 输入、输出

4. InputStream、OutputStream 5. DataInput、DataOutput 6. Reader、Writer 7. 键盘、显示器 8. Static 9. 二进制 10. 文件

11. 目录、目录 12. File、File

13. 数据的输入输出、文件和目录 14. FileInputStream、FileOutputStream 15. DataInputStream、DataOutputStream 16. Object、DataInput、DataOutput

三、简答题:

1. 答:数据存储:XML和数据库一样,都可以实现数据的持久化存储。两者相比,数据

库提供了更强有力的数据存储和分析能力,XML仅仅是存储数据,XML与其它数据表现形式最大的不同是它极其简单。

数据交换:在实际应用中,由于各个计算机所使用的操作系统,数据库不同,因此数据之间的交换向来是头疼的事情,但可以使用XML交换数据来解决这个问题。例如,可以将数据库A中的数据转换成标准的XML文件,然后数据库B再将该标准的XML文件转换成适合自己数据要求的数据,以便达到交换数据的目的。

数据配置:许多应用都将配置数据存储在XML文件中。使用XML配制文件可读性强,灵活性高,不用像其它应用那样要经过重新编译才能修改和维护应用。

2. 答:DOM解析的优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列

等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。 3. 答:SAX解析XML优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM

解析器代码小,适于Applet下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少。

四、编程题:

1. 答:编程分析】本题主要考察对文件流类FileReader和FileWriter的使用方法,实现从

文件中读取数据,以及向文件中输入数据。

第一步:采用面向字符的文件流读出文件内容,使用FileReader类的read()方法,写文件内容使用FileWriter类的write()方法。

第二步:通过键盘方式输入要合并的两个源文件的文件名以及合并后的新文件名。 第三步:将两个源文件内容分别读出并写入到目标文件中。 【参考程序】 import java.io.*;

public class X8_3_2 {

public static void main(String args[]) {

InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); File fin1, fin2, fout; try{ System.out.print(\ fin1 = new File(br.readLine()); if(!fin1.exists()){ System.out.println(\ System.exit(0); } System.out.print(\ fin2 = new File(br.readLine()); if(!fin2.exists()){ System.out.println(\ System.exit(0); } System.out.print(\ fout = new File(br.readLine()); if((new JoinFiles(fin1,fin2,fout)) != null){ // 合并文件 System.out.println(\ } else{ System.out.println(\

}

}

}

}catch(IOException e){ e.printStackTrace(); }

}

【运行结果】 Input the first input file name: f1.txt

Input the second input file name: f2.txt Input the output file name: fout.txt Successful in joining files!

2. 答:【编程分析】本题主要考察利用FileOutputStream、DataOutputStream、FileInputStream、

DataInputStream等类实现对文件的操作。

第一步:产生5000个1~9999之间的随机整数,将其存入文本文件a.txt中,本参考程序利用方法“genRandom(File f)”来实现,本方法使用了FileOutputStream和DataOutputStream两个类。

第二步:将文件中的数据取出进行计算最大值、最小值、平均值以及求和,本参考程序利用方法“calculate(File f)”来实现,本方法使用了FileInputStream和DataInputStream两个类。 【参考程序】

import java.io.*;

public class X8_3_3 { static int max, min, sum = 0; static int[] a = new int[5000]; public static void main(String args[]) { File f = new File(\ if(f == null){ System.out.println(\ System.exit(0);

class JoinFiles{

JoinFiles(File fin1, File fin2, File fout) throws IOException{ FileReader fr1 = new FileReader(fin1); FileReader fr2 = new FileReader(fin2); FileWriter fw = new FileWriter(fout); int ch; while((ch=fr1.read()) != -1) fw.write(ch); while((ch=fr2.read()) != -1) fw.write(ch); fr1.close(); fr2.close(); fw.close(); }

}

} genRandom(f); calculate(f); }

static void genRandom(File f){ // 产生随机数方法 try{ FileOutputStream fos = new FileOutputStream(f); DataOutputStream dos = new DataOutputStream(fos); for(int i=0; i<5000; i++){ dos.writeInt((int)(Math.random()*10000)); } dos.close(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); } }

static void calculate(File f){ // 计算最大值、最小值、平均值以及求和方法 try{ FileInputStream fis = new FileInputStream(f); DataInputStream dis = new DataInputStream(fis); int i; for(i=0; i<5000; i++){ a[i] = dis.readInt(); } dis.close(); max = a[0]; min = a[0]; for(i=0; i<5000; i++){ if(max a[i]) min = a[i]; sum += a[i]; } }catch(FileNotFoundException e){ e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); } int average = sum/5000; System.out.println(\ System.out.println(\}

【运行结果】

max = 9997 min=6

sum = 25031340 average=5006


Java7课后习题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:乐山职业技术学院

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

马上注册会员

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