1、计算机二级(JAVA)上机考试 9 及答案解析(总分:-3.00,做题时间:90 分钟)1.基本操作题 下列程序中,要求建立一个包含一个方法的类,这个方法实现数组的拷贝,要求首先用直接初始化原始数组,然后将原始数组中的数据拷贝到目的数组,并分别输出原始数组和目的数组。要求数组类型为 String 类型,大小为 4,采用动态分配的方式对数组进行初始化。请将程序补充完整。 程序运行结果如下: 原始的: 小龙 小张 小李 小陈 复制后的: 小龙 小张 小李 小陈 public class ex5_1 public static void main(String args) ex5_1 obj5_1=
2、new ex5_1(); obj5_1. ; public void method5_1() int i=0; String strMember = new String4; String strTemp = new String 4; strMember0 = “小龙“; strMember1 = “小张“; strMember2 = “小李“; strMember3 = “小陈“; for(i=0; i_2.简单应用题 请完成下列 Java 程序:运行 3 个线程,每一个线程有自己的标志,用 a,b,c 表示,每个线程显示一个“Start“信息和一个“End“信息并且间隔地显示 2 个“L
3、oop“信息(间隔变化为(0.52)秒之间的随机延迟)。 程序运行结果如下:(注:由于时间间隔为随机数,所以,运行结果的顺序不惟一) a Start b Start c Start b Loop a Loop b Loop b End c Loop a Loop a End c Loop c End 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 public class ex2_2 implements Runnable static char flag2_2 = a; public static void main(String arg) ex2_2 o
4、bj2_2 = new ex2_2(); Thread thread2_2 = new Thread(obj2_2); thread2_2.start(); thread2_2 = new Thread(obj2_2); thread2_2.start(); thread2_2 = new Thread(obj2_2); thread2_2.start(); public void run() char myflag2_2; synchronized(this) ; System.out.println(myflag2_2 + “ Start“);for(int i=0; i_3.综合应用题
5、下面是一个 Applet 程序,其功能是实现网页上的电子时钟,要求显示的格式为 hh:mm:ss如 02:04:50。提示:通过获取当前系统时间来实现。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:-1.00)_计算机二级(JAVA)上机考试 9 答案解析(总分:-3.00,做题时间:90 分钟)1.基本操作题 下列程序中,要求建立一个包含一个方法的类,这个方法实现数组的拷贝,要求首先用直接初始化原始数组,然后将原始数组中的数据拷贝到目的数组,并分别输出原始数组和目的数组。要求数组类型为 String 类型
6、,大小为 4,采用动态分配的方式对数组进行初始化。请将程序补充完整。 程序运行结果如下: 原始的: 小龙 小张 小李 小陈 复制后的: 小龙 小张 小李 小陈 public class ex5_1 public static void main(String args) ex5_1 obj5_1=new ex5_1(); obj5_1. ; public void method5_1() int i=0; String strMember = new String4; String strTemp = new String 4; strMember0 = “小龙“; strMember1 =
7、“小张“; strMember2 = “小李“; strMember3 = “小陈“; for(i=0; i_正确答案:(method5_1() strTempi = strMemberi strMemberi )解析:本题主要考查数组和字符串的基本操作,for 循环语句以及对象调用方法的基本思想。解题关键是熟练掌握一维数组和字符串的基本操作,掌握如何确定 for 循环的上下界,会用面向对象的基本思想。本题中,第 1 个空,用对象 obj5_1 调用方法 method5_1();第 2 个空,实现数组的拷贝,将原始的数组拷贝到目的数组;第 3 个空,输出原始数组中的每一个数据项。2.简单应用题
8、 请完成下列 Java 程序:运行 3 个线程,每一个线程有自己的标志,用 a,b,c 表示,每个线程显示一个“Start“信息和一个“End“信息并且间隔地显示 2 个“Loop“信息(间隔变化为(0.52)秒之间的随机延迟)。 程序运行结果如下:(注:由于时间间隔为随机数,所以,运行结果的顺序不惟一) a Start b Start c Start b Loop a Loop b Loop b End c Loop a Loop a End c Loop c End 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 public class ex2_2 i
9、mplements Runnable static char flag2_2 = a; public static void main(String arg) ex2_2 obj2_2 = new ex2_2(); Thread thread2_2 = new Thread(obj2_2); thread2_2.start(); thread2_2 = new Thread(obj2_2); thread2_2.start(); thread2_2 = new Thread(obj2_2); thread2_2.start(); public void run() char myflag2_2
10、; synchronized(this) ; System.out.println(myflag2_2 + “ Start“);for(int i=0; i_正确答案:(myflag2_2 = flag2_2+ (int)(high-low+1)*(Math.random() + low )解析:本题主要考查线程的创建与同步和控制随机数产生范围的算法。解题关键是,熟悉线程的概念和使用,线程的同步控制,char 类型数据的操作,以及熟悉随机数产生的方法 Math.random(),并且能够进一步根据需要控制随机数产生的范围。在本题中,main()方法中创建 3 个线程,这 3 个线程使用 obj
11、2_2 对象。线程调用 start()方法来中断,使一个新的线程开始执行,并且调用 run()方法。第 1 空,run()方法为自己设置一个线程的标志,并为下一个线程的使用增加这个标志值,由于此时线程正在处理中,因此在同步块中完成修改标志的语句放在同步块中。第 2 个空,通过 low 和 high 两个参数,控制产生随机数的范围,将基本的数学思想应用于程序设计中。3.综合应用题 下面是一个 Applet 程序,其功能是实现网页上的电子时钟,要求显示的格式为 hh:mm:ss如 02:04:50。提示:通过获取当前系统时间来实现。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注
12、意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:-1.00)_正确答案:(strTime = strTime + “0“ + tMin + “:“ strTime = strTime + “0“ + tSec new Thread(this) )解析:本题主要考查 Java 多线程与 Applet 的图形绘制相结合解决实际问题的综合应用。解题关键是熟悉Java 多线程的程序设计思想,必须在程序中编写线程类内 start(), stop()和 run()方法的相关程序,利用线程类的 sleep()方法,让每次显示的时间延迟 1 秒,使电子时钟看起来像是每一秒跳动一次的样子,同时还要熟悉 Date 类的 getHours()等方法获得时间。本题中,包含 2 个线程,一个是程序中 Runnable得到的线程,另一个是程序本身。第 1 处和第 2 处错误相似,一个是在不足 10 的小时数的前一位补上“0“,如 tHour=9,则显示出来的应该是“09“;第三处,用 Thread 类的构造函数创建新的线程时,需要把this 作为参数传递给新的线程,否则程序不会动态执行。