计算机二级考试选择题汇总(计算机等级二级考试辅导)
计算机二级考试选择题汇总(计算机等级二级考试辅导)(5)在JavaReverseOutput程序类中设计一个名称为getUserInputIntegerDataArray的方法(4)点击对话框中的“Finish”按钮,MyEclipse开发工具将帮助开发人员创建出JavaReverseOutput类的初始程序,在JavaReverseOutput类的初始程序中只包含有默认构造方法和main()方法。最终的程序结果示例参看如下示图所示。在本问题中假定数据为一批整数(其它数据类型也同理),并且可以由用户通过键盘输入(各个整数之间以空格分隔,最后按回车键结束数据的输入),数据存储的类型为数组。最后反向(倒序)处理这个数组,从而得到一个新的数组(新数组中各个数据元素的存放顺序与原数组中的各个数据元素逆序),然后再输出这个新的数组中的各个元素值。实现数据的反向处理依据原始数据的类型不同可以有多种不同的实现方法,由于本问题中的数据是存储在数组中,因此
1、将某数组中的元素进行反向(倒序)处理并输出处理后的结果数组(1)反向(倒序)处理并输出各个数据元素值
在程序设计中,经常会涉及反向(倒序)处理原始数据,然后再将处理的结果进行输出(可以是在显示屏幕上显示,也可能是存储到文件中)方面的问题,反向处理的数据源可能是一个数组中的各个数据元素,也可能是一个长的字符串,也可能是一个多数位数字的各个数位等。
读者在学习程序设计时一定要能够编程实现这些“小问题”的功能实现程序,这些“小问题”的功能实现程序不仅是软件企业在面试时经常使用的面试题,也是各种计算机能力和水平考试经常会出现的上机实验题。读者应该多多积累,到一定的时候,就能够提高自己的编程能力,并快速地写出规范化的程序代码。
(2)问题分析和解题思路
在本问题中假定数据为一批整数(其它数据类型也同理),并且可以由用户通过键盘输入(各个整数之间以空格分隔,最后按回车键结束数据的输入),数据存储的类型为数组。最后反向(倒序)处理这个数组,从而得到一个新的数组(新数组中各个数据元素的存放顺序与原数组中的各个数据元素逆序),然后再输出这个新的数组中的各个元素值。
实现数据的反向处理依据原始数据的类型不同可以有多种不同的实现方法,由于本问题中的数据是存储在数组中,因此反向(倒序)处理数组中的元素,也就是需要将整个数组中的各个数据元素倒转过来,只需要将它们首尾进行交换,但当交换到中间数时,整个数组就已经完成了反向(倒序)处理。
(3)在MyEclipse开发工具中创建出一个类名称为JavaReverseOutput,程序包名称为com.bluedream.Javaoop,并且包含有main()方法的Java程序类,JavaReverseOutput程序类的创建过程参看如下示例图所示。
(4)点击对话框中的“Finish”按钮,MyEclipse开发工具将帮助开发人员创建出JavaReverseOutput类的初始程序,在JavaReverseOutput类的初始程序中只包含有默认构造方法和main()方法。最终的程序结果示例参看如下示图所示。
(5)在JavaReverseOutput程序类中设计一个名称为getUserInputIntegerDataArray的方法
在本程序实现的示例中假定数据为一批整数(其它数据类型也同理),并且可以由用户键盘输入(各个整数之间以空格分隔,最后按回车键结束数据的输入),数据存储的类型为数组。然后通过程序的反向(倒序)处理获得处理后的结果数组,并打印出该数组中的各个元素的值,与反向(倒序)处理前的各个元素的值进行对比。
为了提高程序的可复用性和代码清晰可读,设计了一个名称为getUserInputIntegerDataArray的方法。该方法主要是获得用户输入的各个整数类型的数据值,并构建出对应的int类型的数组,最后将构建好的数组返回给上层的调用者。getUserInputIntegerDataArray方法的代码示例参看如下示例图所示。
(6)在JavaReverseOutput程序类中设计一个名称为doReverseArrayElement的方法
反向(倒序)处理数组中的元素,也就是需要将整个数组中的各个数据元素倒转过来,只需要将它们首尾进行交换,但当交换到中间数时,整个数组就已经完成了反向(倒序)处理。 为此,在JavaReverseOutput程序类中设计一个名称为doReverseArrayElement的方法。
该doReverseArrayElement方法完成对数组的反向(倒序)处理,并将处理后的结果数组返回给上层的调用者。这样的程序代码设计是符合面向对象编程封装和代码重用的设计原则,该方法的代码示例参看如下示例图所示。
(7)在JavaReverseOutput程序类中编程main()方法中的调用代码
在main()方法中定义相关的数据,然后通过所创建出的对象实例oneJavaReverseOutput调用getUserInputIntegerDataArray方法,从而获得用户所输入的各个数据形成的数组。随后再将该数组传入给returnReversedIntegerDataArray方法完成反向(倒序)处理数组中的元素,最后再将处理后的结果数组返回给上层的调用者。
在程序执行过程中,分别显示处理前的数组中的各个元素值和处理后的结果数组中的各个元素值。main()方法的代码示例参看如下示例图所示。
(8)执行本程序示例
在MyEclipse开发工具中右击源程序,在弹出的快捷菜单中选择“Run as”下拉菜单中的“Java Application”子菜单项目以在Java虚拟机环境中执行示例,将执行本示例JavaReverseOutput类程序。
(9)JavaReverseOutput类程序的执行结果将在MyEclipse开发工具的控制台窗口中显示,在显示的控制台中将显示出反向(倒序)处理后的结果——参看如下示例图所示
本示例程序中用户输入的数据为:100 -100 200 -200 300 -300 400 -400 500 -500,而程序反向(倒序)处理后的结果为-500 500 -400 400 -300 300 -200 200 -100 100。程序执行的结果完全正确,参看上面的示例图中控制台输出结果。
2、数组的元素值来自于数据文件,将数组中的元素进行反向处理并输出结果数组(1)问题分析和解题思路
本问题是对前面的问题的进一步的功能扩展,反向处理的数组中的各个元素值不是由用户键盘输入,而是来自于某个数据文件。因此,实现本问题的主要关键则是如何获得保存在数据文件中的数据元素值,一旦获得了数据则只需要将这些数据转存到数组中。
在JDK系统库中提供有java.io程序包,其中提供有许多涉及磁盘文件IO操作(读/写)功能的类和接口,可以实现对文本类型、二进制类型及压缩格式等类型的文件进行读/写操作。
由于本问题的数据是文本类型的,因此主要涉及和应用InputStreamReader(InputStream in) 和OutputStreamWriter(OutputStream out)流类, 它们可以使用指定的编码规范并基于字节流生成对应的字符流。但由于InputStreamReader和OutputStreamWriter字符流类在创建流类的对象时必须以一个字节流作为原始的数据流来打开文件。
但为了能够直接将一个具体的文件名的文件直接转换为字符流类的对象,在java.io包中还为程序员提供了InputStreamReader和OutputStreamWriter字符流类的两个子类FileReader和FileWriter。
(2)新建一个存储目标数据的数据文件
在读者的计算机的磁盘中新建一个存储目标数据的数据文件,该数据文件的文件名称为arrayElementData.txt,该文件存储在D盘的根目录中。文件中仍然存储如下的数据:100 -100 200 -200 300 -300 400 -400 500 -500,参看如下示例图所示。
(3)在JavaReverseOutput程序类中再新增加一个名称为getDataArrayFromFile ()的方法。
在java.io程序包中的FileReader和FileWriter两个流类主要针对的是以 Unicode 为基础的文件,比如 JSON、XML和TXT等格式的文本文件。此外,为了能够逐行读取数据文件中的数据,对FileReader类采用BufferedReader类进行包装。BufferedReader类继承基类Reader类,它提供通用的缓冲方式的文本读取,而且提供了很实用的readLine方法,可以逐行读取文本。
实现本问题的程序与前面示例的程序主要差别在于getUserInputIntegerDataArray ()方法,因此需要在JavaReverseOutput程序类中再新增加一个名称为getDataArrayFromFile ()的方法。
(4)编程JavaReverseOutput程序类中的getDataArrayFromFile ()方法的代码
在getDataArrayFromFile ()方法中首先创建文本文件流对象实例,然后逐行读取数据文件中的数据,考虑到数据文件中的数据可能会有多行,因此需要将读取的每行数据串接,两个数据行之间采用空格分隔;最后将从数据文件中所获得的各个数据项目形成的字符串转换为数组,并返回给上层的调用者——参看如下示例图所示。
(5)修改main()方法中的相关程序代码
需要将main()方法中对getUserInputIntegerDataArray方法的调用修改为对getDataArrayFromFile方法的调用,其它部分的代码不变。参看如下示例图所示。
(6)再执行功能扩展后的程序代码
在MyEclipse开发工具中右击源程序,在弹出的快捷菜单中选择“Run as”下拉菜单中的“Java Application”子菜单项目,将执行本示例JavaReverseOutput类程序。
(7)功能扩展后的程序代码执行的结果参看如下示例图所示
从程序的执行结果来看,实现正确地获得了在数据文件中存储的数据100 -100 200 -200 300 -300 400 -400 500 -500。然后再将这些数据转存到数组中,并对数组进行反向处理,获得最终处理的结果-500 500 -400 400 -300 300 -200 200 -100 100。
3、扩展数据文件中的数据为多行数据以满足更通用的应用需求(1)在数据文件arrayElementData.txt中再添加一行或多行数据
为了验证本示例的程序代码是否能够满足更通用的应用需求,在数据文件arrayElementData.txt中再添加一行数据,数据为:10 -10 20 -20 30 -30 40 -40 50 -50。参看如下示例图所示。
(2)再执行本示例程序并验证是否能够获得所有的数据
从程序的执行结果来看,完全获得了所有的数据,也就是:100 -100 200 -200 300 -300 400 -400 500 -500 10 -10 20 -20 30 -30 40 -40 50 -50。反向处理后的结果数据为:-50 50 -40 40 -30 30 -20 20 -10 10 -500 500 -400 400 -300 300 -200 200 -100 100。参看如下示例图所示。
计算机等级二级考试辅导:综合应用上机模拟题及解答(第1部分)
计算机等级考试辅导:“Java编程规范”单元辅导文档
计算机等级考试辅导:Java语言的诞生、目标、特点和实现机制
计算机等级考试辅导:Java类的基本组成和使用单元辅导文档
计算机等级考试辅导:面向对象编程的基本概念和特征单元辅导文档