1、国家二级( JAVA)机试模拟试卷 76及答案与解析 一、基本操作题( 30分) 1 下列程序中,用户使用 JOptionPane输入一个二维数组的行数,程序随机生成每一行的列数,并对其赋值。最后显示这个二维数组。请填写横线处的内容。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 import javax.swing.*; public class Examplel_10 public static void main (String argv) String sDimU = JOptionPane. showInputDialog (“请输入数组的行数 “)
2、; int iDimU = _ (sDimU); int numbers = new intiDimU ; for(int i = 0; i iDimU; i+) int k = (int) (Math.random() *5+1); numbers i = _; for(int i = O; i iDimU; i+) for(int j = 0; _; j+) numbersi j = (int) (Math.random()*100); System.out.print(numbersi j + “ “); System.out.println(); System.exit(O); 二、简
3、单应用题( 40分) 2 下列程序的功能是为变量赋值,程序运行后,输出 i=51。请改动 main方法中的错误,使程序能够正确编译、运行并输出正确的结果。 注意:不改动程序结构。 class A private int a; public void setA (int x) a=x; public int getA() return a; public class MethodTest public static void main(String args) A a=A(); a.getA(51); int i=a.getA(); System.out.println (“i=“+i); 三、
4、综合应用题( 30分) 3 下面是一个 Applet程序,其功能是将完整的图像显示于 Applet的区块中,然后可以通过拖动鼠标让图像随着鼠标拖动的轨迹而移动。请改正程序中的错误 (有下划线的语句 ),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.applet.*; import java.awt.*; /* applet code=“ex7_3.class“ width=800 height=400 /applet */ public class ex7_3 extends Applet private Image iIm
5、g; 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 y) xPos = x; yPos = y; paint(); return true; ex7_3.html HTML HEAD TITLE ex7_3 /TITLE /HEAD BODY applet co
6、de=“ex7_3.class“ width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 76答案与解析 一、基本操作题( 30分) 1 【正确答案】 Integer,parseInt new intk j numbersi.length 【试题解析】 本题考查知识点:本数据类型包装类的使用,数组的使用 解题思路:首先, JOptionPane显示了一个可以输入数据的对话框,用户通过该对话框输入对话框的行数。第一个循环是对每一行分配存储空间,第二个循环是对已经分配好空间的二维数据进行赋值,并在赋值的过程中将数组显示出来。 第一个空考
7、察字符串和数值之间的相互转换。每一种基本数据类型的包装类都有各 自的方法将字符串转换为相应的基本数据类型,转换为 int型的方法是Integer parseInt()。 第二个空考察多维数组的基本概念,多维数组的高维标识低维的名字,但是低维必须分配自己的存储空间。因此,此处需要用 “new”关键字对每一行动态分配列空间。 第三空,由于多维数组的高维标识低维的名字,所以高维可以直接用来表示低维部分,使用方法跟普通数组一样。如本题中 “numbers0”就表示一个用“numbers0”命名的一维数组。所以此处应该填 “j numbersi length”。 二、简单应用题( 40分) 2 【正确答
8、案】 改正后的 main方法如下: public static void main(String args) A a=new A(); a.getA(51); int i=a.getA(); System.out.println(“i=“+i); 【试题解析】 本题综合考查类及类成员的定义与使用方面的知识。该程序中定义了两个类: A和 MethodTest,类 A中封装了一个私有的成员变 量 a和两个公有的方法 setA和 getA。在类 MethodTest中包含了 main方法。创建对象应使用 new操作符来实例化对象,程序在创建对象 a时未使用 new,故存在错误。由于 a是对象 a的私
9、有变量,在 main方法中不能直接访问,只能通过对象 a的公有方法setA和 getA来访问。公有方法 setA的功能是将传递回来的参数值赋给 a,所以应当调用 setA方法来为变量 a赋值。 三、综合应用题( 30分) 3 【正确答案】 iImg getImage(getDocumentBase(), “ex7_3.jpg“) g drawImaSe(iImg, xPOs, yPOs, this) repaint() 【试题解析】 本题主要考查在 Applet窗口中显示图像,并结合鼠标事件处理的综合应用。解题关键是熟悉图像文件的加载过程;会跟踪鼠标拖动的事件,并将鼠标在 Applet窗口中的坐标信息作为参数传递给 drawImage()方法,用于在新的位置显示图像,从而实现拖动效果。本题中,第一处, getImaSe()方法应该有 2个参数,第一个参数是 SetDocumentBase()方法的返回值,即图像文件的路径;第二处, drawImage()方法最后一个参数应该是 this,确定是在当前运行的对象中绘制图像;第三处,应该调用 repaint()方法,进行重画,而不是 paint()方法。程序运行结果如下: