1、国家二级( JAVA)机试模拟试卷 65及答案与解析 一、基本操作题( 30分) 1 下面的程序是求 9999以内的完全数。所谓完全数是指这样的自然数:它的各个约数 (不包括该数自身 )之和等于该数自身。如 28=1+2+4+7+14就是一个完全数。请在程序的每条横线处填写一个语句,使程序的功能完整。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 源程序文件代码清单如下: public class QuanShu public static void main(String args) for (int n=1;n 9999; n+) if(_) Syst
2、em.out.println (n); public static int divsum(int n) /该方法功能是求一个数的所有约数 int s=0; for (int i=1; i n; i+) if(_) _ return s; 二、简单应用题( 40分) 2 下列程序用来显示用户要求打开的图片。在名为 “读取图像 ”的 JFrame框架中有一个单行文本框,用户可以在其中输入图片文件的文件名称,按下 “浏览图片 ”按钮以后,新生成一个对话框,将图片显示在这个对话框中,运行结果如下图所示。请填写横线处的内容。 注意:请勿改动 main()主方法和其他已有语句 内容,仅在横线处填入适当语句
3、。 import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class Example2_9 public static void main(String args) JFrame frame = new FileNameFrame(“读取图像 “); frame.setDefaultCloseOperation(JFrame. EXIT ON CLOSE); frame.setSize(300, 100); frame.show(); class FileNameFr
4、ame extends JFram implements ActionListener JLabel inputLabel; JTextField fileNameText; JButton containtButton; public FileNameFrame(String titleText) super(titleText); inputLabel = new Jnabel(“请输入图像文件的名称 “); fileNameText = new JTextField(10); containtButton = new JButton(“浏览图片 “); fileNameText.addA
5、ctionListener(this); containtButton.addActionListener(this); JPanel panel = new JPanel(); panel.add(fileNameText); panel.add(containtButton); Container containt = getContentPane(); containt.setLayout(new BorderLayout(3,3); containt.add(inputLabel, BorderLayout.NORTH); containt.add(panel, BorderLayou
6、t.CENTER); public void actionPerformed(ActionEvent e) String fileName = fileNameText.getText(); ImageIcon image = _; ImageDialog dlg = new ImageDialog(this); dlg.setImage(image); dlg.setTitle(fileName); dlg.show(); class ImageDialog extends JDialog JLabel imageLabel; public ImageDialog(JFrame frame)
7、 super(frame); imageLabel = new JLabel(); getContentPane().add(imageLabel); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) hide (); ); this.setSize(200, 200); public void setImage(ImageIcon icon) imageLabel. _(icon); 三、综合应用题( 30分) 3 在以下程序中,鼠标单击小应用程序的某一点,则会在该点显示一个
8、图标,如果双击,则会清除该图标。且在浏览器的状态栏上会显示鼠标单击位置的坐标。运行结果如下图所示。请改正程序中的错误 (有下划线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不是增行或删行。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Example3_1 extends Applet int xPoint, yPoint; int sum; Image displayIm; public void init() displayIm = getImage(“ms.j
9、pg“); addMouseListener(new SClickMouse() ; sum = 2; public void paint(Graphics g) if(sum = 1) g.drawImage(displayIm, xPoint, yPoint, this); else g.fillRect(xPoint, yPoint, 60, 60); public class SClickMouse implements MouseListener public void mouseClicked(MouseEvent mouse) sum = mouse.getClickCount(
10、); xPoint = mouse.getX(); yPoint = mouse.getY(); paint(); public void mouseEntered(MouseEvent mouse) public void mouseExited(MouseEvent mouse) public void mousePressed(MouseEvent mouse) xPoint = mouse.getX(); yPoint = mouse.getY(); showStatus(“x=“+xPoint+“,y-“+yPoint); public void mouseReleased(Mous
11、eEvent mouse) Exampie3_1.html: html head title Example3_1 /title /head body applet code=“Example3_1.class“ width=“400“ height=“500“ /applet /body /html 国家二级( JAVA)机试模拟试卷 65答案与解析 一、基本操作题( 30分) 1 【正确答案】 n=divsum(n) n i=0 s+=i; 【试题解析】 本题考查 for循环语句、求余运算符 ( )和 Java语言方法的使用。解答本题的关键是熟练使用 for循环语句。在本题中, if(n=
12、divsum(n)语句是用来调用 divsum(n)方法 (其中 n为方法的实际参数 )和判断某 个自然数是否为完全数。 n i=0是用来判断数 n是否能被数 i整除, s+=i是用来累加某个自然数的所有约数。 二、简单应用题( 40分) 2 【正确答案】 new ImageIcon(fileName) setIcon 【试题解析】 本题是将图片作为图标显示到构件中。 ImageDialog是程序自定义的一个对话框类,在其中添加了一个 JLabel对象 “imageLabel”, setImage方法可以将名为 “icon”的图片添加到 imageLabel中,显示到界面上, ImageDia
13、log对话框的标题为图片文件的文件名。 actionPerformed方法相应 “浏览图片 ”按钮对应的事件。按下按钮以后,首先获得用户输入的文件名,以及对应的图片,然后生成 ImageDialog的对象,调用其中的 setImage方法把图片显示出来。 第 1个空是获得根据文件名获得图片。直接根据文件名新建一个 ImageIcon对象。 第 2个空考查构件添加图标的方法。 JLabel添加图标的方法是 setIcon()。 三、综合应用题( 30分) 3 【正确答案】 displayIm=getImage(getDocumentBase(), “ms.jpg“) 第一处也可改作 displa
14、yIm=getImage(getCodeBase(), “ms.jpg“) g.clearRect(xPoint, yPoint, 60, 60) repaint() 【试题解析】 Applet获得图像有两种方式,一种是 getImage(URL url),另一种是 getImage(URL url, String name)。 init()方法用来初始化小应用程序,首先是将图像文件读入内存,然后为小应用程序添加鼠标点击事件。 paint()方法向页 面绘制图像,题中的 if-else语句表示用户单击鼠标则在鼠标单击的位置显示图片,用户多次点击鼠标,则清除该点右下方长宽均为 60的矩形区域内的
15、图像。SClickMouse实现了鼠标监听器。 mouseClicked中获取鼠标点击的位置和点击的次数。 mousePressed方法获得鼠标按下的坐标,并将坐标值显示在状态栏中。 第一种方法所使用的 URL必须是包含图像文件名的绝对 URL,所以本处不能填使用文件名作参数。采用第二种获得图像的方式时,如果图像和 Applet在同一文件夹可使用 getCodeBase()获得相 应的 URL,当图像和 Applet所属的 HTML文件在同一文件夹时,可以采用 getDocumentBase()获得相应的 URL。所以第一个错误可以改为 getDocument Base(),也可以改为 getCodeBase()。 第二处错误, Graphics对象作图时,可以使用 clearRect()方法清除某一个区域的图形,而 fillRect()方法只是根据当前颜色 (本题中为黑色 )画出一个实心矩形。在程序要求 Applet绘制图形时,只能调用 repaint()方法,此方法会自动调用 paint()方法。故第三 个错误应该改成 repaint()方法。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1