1、二级 JAVA 机试-166 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.在程序中,用户输入一个文件名,根据用户输入显示相应文件的信息。注意:请勿修改 main()主方法和其他已有语句内容,仅在横线处填入适当语句。_java.io.*;public class basicpublic static void main(String args)InputStreamReader reader;BufferedReader in;System.out.println(“请输入文件名: “);tryreader=new InputStre
2、amReader(_);in=new BufferedReader(reader);String filename=in.readLine();File file=new File(filename);System.out.println(“文件名:“+file._);System.out.println(“路径:“+file.getAbsolutePath();System.out.println(“大小:“+file.length();catch(Exception e)e.printStackTrace();(分数:30.00)_二、2简单应用题(总题数:1,分数:40.00)2.本程序
3、的功能是读取用户输入的整数 a、b,单击按钮“计算”,则计算出 a 和 b 数的和,并显示计算的结果。请将程序补充完整。注意:请勿修改 main()主方法和其他已有语句内容,仅在横线处填入适当语句。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class simplepublic static void mainString args)ExampleFrame frame=new ExampleFrame();frame._(JFrame.EXIT_ON_CLOSE);frame.show();cla
4、ss ExampleFrame extends JFrameprivate JPanel panel;public static final int DEFAULT_WIDTH=250;public static final int DEFAULT_HEIGHT=250;public ExampleFrame()Init();setTitle(“welcome“);setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);Container contentPane=getContentPane();contentPane.add(panel);private void ini
5、t()JLabel la1=new JLabel(“输入整数 a:“);JLabel la2=new JLabel (“输入整数 b:“);final JTextField num1=new JTextField(10);final JTextField num2=new JTextField(10);JButton but=new JButton(“计算“);final JLabel res=new JLabel(“结果:“);but.addActionListener(_public void actionPerformed(ActionEvent event)String str=new
6、 String();String s1=num1.getText();String s2=num2.getText();tryint a=Integer.parseInt(s1);int b=Integer.parseInt(s2);str=String.valueOf(a +b);catch(Exception e)str=e.getMessage();res.setText (“结果:“+str););panel=new JPanel();panel.setLayout(new FlowLayout(FlowLayout.LEFT);panel.add(la1);panel.add(num
7、1);panel.add(la2); panel.add(hum2);panel.add(but);panel.add(res);(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是建立两个文本区域,一个为编辑区,一个为只读区;建立两个按钮,一个实现将编辑区中被鼠标选定的文本内容复制到只读区中,一个实现将只读区的全部文本内容清空。请更正题中带下划线的部分。注意:不改变程序的结构,不得增行或删行。import java.awt.*;import java.applet.*;/*applet code=“exl4_3.class“ wi
8、dth=800 height=400/applet*/public class exl4_3 extends Appletprivate Button okBtn, clearBtn;private String strMessage;private TextArea tArea1, tArea2;public void init()strMessage=“Hello! Welcome to the test! /n“ +“Wish you good luck!“;tArea1=new TextArea(10,25);tArea1.setText(strMessage);tArea2=new
9、TextArea(10,25);tArea2.setEditable(true);okBtn=new Button(“Copy“);clearBtn=new Button(“Clear“);add(tArea1);add(tArea2);add(okBtn);add(clearBtn);public boolean action(Event e,Object o)if(e.target= =okBtn)tArea1.setText(tArea2.getSelectedText();else if(e.target= =clearBtn)tArea1.setText(“);return ture
10、;exl4_3.htmlHTMLHEADTITLEexl4_3/TITLE/HEADBODYapplet code=“exl4_3.class“width=800 height=400/applet/BODY/HTML(分数:30.00)_二级 JAVA 机试-166 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.在程序中,用户输入一个文件名,根据用户输入显示相应文件的信息。注意:请勿修改 main()主方法和其他已有语句内容,仅在横线处填入适当语句。_java.io.*;public class basicpublic static
11、void main(String args)InputStreamReader reader;BufferedReader in;System.out.println(“请输入文件名: “);tryreader=new InputStreamReader(_);in=new BufferedReader(reader);String filename=in.readLine();File file=new File(filename);System.out.println(“文件名:“+file._);System.out.println(“路径:“+file.getAbsolutePath(
12、);System.out.println(“大小:“+file.length();catch(Exception e)e.printStackTrace();(分数:30.00)_正确答案:(importSystem.ingetName()解析:讲解 本题考查知识点:Java 类库中常用类和接口、文件和文件 I/0、输入输出。解题思路:题中 reader 从系统获得输入流,从这个流中得到用户输入的字符串作为文件名,找到文件,进而得到文件的相关信息。Java 的类库需要引入以后才能使用,关键字 import 就是声明需要引入的类或包。因此第 1个空的答案是 import。Java 的输入输出是以
13、流的形式来完成的。InputStreamReader 的对象 reader 从系统输入中读取输入流,保存在相应的缓冲区中,因此第 2 个空的答案是 System.in。BufferedReader 对象则是从这个缓冲区中读取数据,使用 BufferedReader 类的 readLine()方法即可获得输入流中的一行输入。在 Java 程序中,文件作为类的一个实例来处理,File 类具有很多与文件相关的方法,比如获得上级目录名(getParent()方法)、路径(getPath()方法)等,第 3 个空就是使用 getName()方法获取文件的文件名。二、2简单应用题(总题数:1,分数:40.
14、00)2.本程序的功能是读取用户输入的整数 a、b,单击按钮“计算”,则计算出 a 和 b 数的和,并显示计算的结果。请将程序补充完整。注意:请勿修改 main()主方法和其他已有语句内容,仅在横线处填入适当语句。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class simplepublic static void mainString args)ExampleFrame frame=new ExampleFrame();frame._(JFrame.EXIT_ON_CLOSE);frame.sh
15、ow();class ExampleFrame extends JFrameprivate JPanel panel;public static final int DEFAULT_WIDTH=250;public static final int DEFAULT_HEIGHT=250;public ExampleFrame()Init();setTitle(“welcome“);setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);Container contentPane=getContentPane();contentPane.add(panel);private
16、void init()JLabel la1=new JLabel(“输入整数 a:“);JLabel la2=new JLabel (“输入整数 b:“);final JTextField num1=new JTextField(10);final JTextField num2=new JTextField(10);JButton but=new JButton(“计算“);final JLabel res=new JLabel(“结果:“);but.addActionListener(_public void actionPerformed(ActionEvent event)String
17、 str=new String();String s1=num1.getText();String s2=num2.getText();tryint a=Integer.parseInt(s1);int b=Integer.parseInt(s2);str=String.valueOf(a +b);catch(Exception e)str=e.getMessage();res.setText (“结果:“+str););panel=new JPanel();panel.setLayout(new FlowLayout(FlowLayout.LEFT);panel.add(la1);panel
18、.add(num1);panel.add(la2); panel.add(hum2);panel.add(but);panel.add(res);(分数:40.00)_正确答案:(setDefaulktCloseOperationnew ActionListener()解析:讲解 本题考查知识点:图形用户界面、Swing 构件。解题思路:图形用户界面上所有显示的要素都是编程时通过设计添加上去的。本题中主要考查了图形用户界面的关闭按钮事件响应,以及控件事件的监听。关闭按钮是图形用户界面的一个基本组成要素,是一种默认的关闭方式。ExampleFrame 是程序定义的一个内部类,在其构造函数中实现了
19、初始化。init 方法将界面添加到面板中。but.addActionListener 为按钮 but 添加事件监听器。在监听器中,首先获得用户输入的两个数的值。使用 try-catch 的原因是,用户可能输入的不是数字,这样就需要对异常情况进行处理。然后计算这两个数的和。最后,计算结果通过名为 res 的 JLabel 构件显示给用户。Java 程序中,通过设置 JFrame 框架的关闭属性,就可以在界面上对关闭按钮的事件做出响应。即 setDefaultCloseOperation()方法,这样就得到了第 1 个空的结果。事件监听是一种专门的开发模式,将事件分为监听源和监听器;事件源是各种构
20、件以及由各类构件继承而生成的新的构件,监听器是对事件做出具体动作的实体,它必须实现某种监听器接口。事件源自身不处理事件,而是通过注册监听器,将事件委托给监听器来处理。本题中第 2 个空就是通过新建一个 ActionListener 的实例来为 but 构件注册一个监听器。三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是建立两个文本区域,一个为编辑区,一个为只读区;建立两个按钮,一个实现将编辑区中被鼠标选定的文本内容复制到只读区中,一个实现将只读区的全部文本内容清空。请更正题中带下划线的部分。注意:不改变程序的结构,不得增行或删行。import jav
21、a.awt.*;import java.applet.*;/*applet code=“exl4_3.class“ width=800 height=400/applet*/public class exl4_3 extends Appletprivate Button okBtn, clearBtn;private String strMessage;private TextArea tArea1, tArea2;public void init()strMessage=“Hello! Welcome to the test! /n“ +“Wish you good luck!“;tArea
22、1=new TextArea(10,25);tArea1.setText(strMessage);tArea2=new TextArea(10,25);tArea2.setEditable(true);okBtn=new Button(“Copy“);clearBtn=new Button(“Clear“);add(tArea1);add(tArea2);add(okBtn);add(clearBtn);public boolean action(Event e,Object o)if(e.target= =okBtn)tArea1.setText(tArea2.getSelectedText
23、();else if(e.target= =clearBtn)tArea1.setText(“);return ture;exl4_3.htmlHTMLHEADTITLEexl4_3/TITLE/HEADBODYapplet code=“exl4_3.class“width=800 height=400/applet/BODY/HTML(分数:30.00)_正确答案:(tArea2.setEditable(false)tArea2.setText(tArea1.getSelectedText()tArea2.setText(“)解析:讲解 本题主要考查 Applet 窗口、其事件处理机制以及对
24、文本区域的相关操作。解题关键是熟悉TextArea 的基本方法,如 setEditable()方法就是用来确定编辑模式的一个重要的方法,并且需要明确题目要求的两个文本区域的区别和联系,根据不同的事件,来对这两个文本区域进行操作。本题中,第 1 个空,将第 2 个文本区域 tArea2 的编辑模式设定为只读,注意参数为 false,因为默认的编辑模式设定为可编辑的,用 true 表示,所以参数应该是 false;第 2 个空,响应单击 Copy 按钮事件的语句应该将第 1个丈本区 tArea1 的被选择的文本内容取出放入第 2 个文本区 tArea2 中;第 3 个空,响应单击 Clear 按钮事件的语句应该将第 2 个文本区 tArea2 中的所有文本内容清空。