1、二级 JAVA 机试-137 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下面的程序是用 do_while 语句计算 10 的阶乘。请在程序的每条横线处填写一个语句,使程序的功能完整。注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。源程序文件代码清单如下:public class DoWhileLooppublic static void main(_)int n=10;long result=1;do_System.out.println(“10 的阶乘为: “+result);(分数:30.00
2、)_二、2简单应用题(总题数:1,分数:40.00)2.以下程序中,当用户单击“移动”按钮以后,就可以使用方向键控制屏幕上句子的移动,单击“停止”按钮,则句子不再随着方向键移动。运行结果如下图所示(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是将完整的图像显示于 Applet 的区块中,然后可以通过拖动鼠标让图像随着鼠标拖动的轨迹而移动。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。源程序文件代码清单如下:import java.applet.*;import java.a
3、wt.*;/*applet code=“ex7_3.class“ width=800 height=400 /applet*/public class ex7_3 extends Appletprivate Image iImg;private int xPos,yPos;public void init()xPos = yPos = 0;iImg = getImage(“ex7_3.jpg“);public void paint(Graphics g)g.drawImage(iImg,xPos,yPos);public boolean mouseDrag(Event e,int x, int
4、 y)xPos = x;yPos = y;paint();return true;ex7_3.htmlHTMLHEADTITLEex7_3/TITLE/HEADBODYapplet code=“ex7_3.class“ width=800 height=400 /applet/BODY/HTML(分数:30.00)_二级 JAVA 机试-137 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下面的程序是用 do_while 语句计算 10 的阶乘。请在程序的每条横线处填写一个语句,使程序的功能完整。注意:请勿改动 main()主方法和其
5、他已有的语句内容,仅在横线处填入适当的语句。源程序文件代码清单如下:public class DoWhileLooppublic static void main(_)int n=10;long result=1;do_System.out.println(“10 的阶乘为: “+result);(分数:30.00)_正确答案:(String argsresult*=n-;while(n=1);)解析:解析 本题主要考查 main()主方法的使用、while 循环语句的用法。解答本题的关键是熟练掌握 main()土方法的使用、while 循环语句的用法。在本题中,String args的作用是
6、声明字符数组 args, result*=n-;语句的作用是获得 n 的阶乘并赋值给变量 result。二、2简单应用题(总题数:1,分数:40.00)2.以下程序中,当用户单击“移动”按钮以后,就可以使用方向键控制屏幕上句子的移动,单击“停止”按钮,则句子不再随着方向键移动。运行结果如下图所示(分数:40.00)_正确答案:(initaddKeyListener)解析:解析 本题考查知识点:小应用程序概念、Applet 执行过程、JavaApplication 和 Applet。解题思路:Applet 运行时,首先由浏览器调用 init 方法,该方法通知 Applet 已被加载,在这个方法中
7、通常进行一些基本的初始化过程。Applet 的基本方法还有 start()、stop()、destroy()。类 Example2_8 实现了“KeyListener”监听器接口,就可以通过该监听器的方法监听键盘事件。需要填空的方法是初始化Applet 程序,keyPressed()方法中专门处理方向键的事件。按下方向键以后,就会调用 Label 的setLocation()方法重新设置“out”所在的位置。当用户按下“移动”按钮以后,AddMoveListener 为“移动按钮”添加了针对键盘的监听器。当用户按下“停止移动”按钮以后,RemoveListener 从“移动”按钮中移出针对键盘
8、事件的监听器。本题中 start 方法已经实现,另外两个方法分别用于 Applet 的停止和卸载,所以第一个空只能填“init”,用来为 Applet 实现初始化。由于本题是使用键盘来控制 Label 对象的移动,所以必须添加针对键盘的监听器,这样才能对键盘事件做出反应,第二个空就是给“button”添加键盘事件监听器。三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是将完整的图像显示于 Applet 的区块中,然后可以通过拖动鼠标让图像随着鼠标拖动的轨迹而移动。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得
9、增行或删行。源程序文件代码清单如下:import java.applet.*;import java.awt.*;/*applet code=“ex7_3.class“ width=800 height=400 /applet*/public class ex7_3 extends Appletprivate Image iImg;private int xPos,yPos;public void init()xPos = yPos = 0;iImg = getImage(“ex7_3.jpg“);public void paint(Graphics g)g.drawImage(iImg,xP
10、os,yPos);public boolean mouseDrag(Event e,int x, int y)xPos = x;yPos = y;paint();return true;ex7_3.htmlHTMLHEADTITLEex7_3/TITLE/HEADBODYapplet code=“ex7_3.class“ width=800 height=400 /applet/BODY/HTML(分数:30.00)_正确答案:(iImggetImage(getDocumentBase(),“ex7_3.jpg“)gdrawImaSe(iImg,xPOs,yPOs,this)repaint()
11、解析:解析 本题主要考查在 Applet 窗口中显示图像,并结合鼠标事件处理的综合应用。解题关键是熟悉图像文件的加载过程;会跟踪鼠标拖动的事件,并将鼠标在 Applet 窗口中的坐标信息作为参数传递给 drawImage()方法,用于在新的位置显示图像,从而实现拖动效果。本题中,第一处,getImaSe()方法应该有 2 个参数,第一个参数是 SetDocumentBase()方法的返回值,即图像文件的路径;第二处,drawImage()方法最后一个参数应该是 this,确定是在当前运行的对象中绘制图像;第三处,应该调用repaint()方法,进行重画,而不是 paint()方法。程序运行结果如下:*