1、二级 JAVA 机试-70 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题的功能是计算二维数组 arr=34,21,45,67,20),(23,10,3,45,76,22,3,79,56,50 中的最小值,并输出。public class java1public static void main(Stringargs)int arr=34,21,45,67,20,23,10,3,45,76,22,3,79,56,50;int i=0;int j=0;int min=arr00;while(i3)while(_)if(arrijmin
2、)min=arrij;j+;_;_;System.out.println(“The min:“+min);(分数:30.00)_二、简单应用题(总题数:1,分数:40.00)2.本题是一个 Applet,它显示了一个树型结构。单击树结点的时候,就能将其子结点展开,同时下面的文本框可以显示出所单击的结点的路径,比如单击了根结点下 B 结点下 B2 结点,则文本框显示为“TOP,B,B2”。import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.tree.*;public class jav
3、a2 extends JAppletJTree tree;JTextField jtf;public void init()Container cp=getContentPane();cp.setLayout(new BorderLayout();_top=new DefauhMutableTreeNode(“TOP“);DefauhMutableTreeNode a=new DefaultMutableTreeNode(“A“);DefaultMutableTreeNode a1=new DefaultMutableTreeNode(“A1“);a.add(a1);DefaultMutabl
4、eTreeNode a2=new DefaultMutableTreeNode(“A2“);a.add(a2);DefaultMutableTreeNode a3=new DefauhMutableTreeNode(“A3“);a.add(a3);DefaultMutableTreeNode b=new DefaultMutableTreeNode(“B“);DefaultMutableTreeNode b1=new DefaultMutableTreeNode(“B1“);b.add(b1);DefaultMutableTteeNode b2=new DefaultMutableTreeNo
5、de(“B2“);b.add(b2);DefaultMutableTreeNode b3=new DefaultMutableTreeNode(“B3“);b.add(b3);top.add(a);top.add(b);tree=new JTree(top);int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane jsp=new JScrollPane(tree,v,h);cp.add(jsp,Borde
6、rLayout.CENTER);jtf=new JTextField(20);cp.add(jtf,BorderLayout.SOUTH);tree.addMouseListener(new MouseAdapter()public void mouseClicked(MouseEvent me)doMouseClicked(me););void doMouseClicked(MouseEvent me)_tp=tree.getPathForLocation(me.getX(),me.getY();if(tp!=null)jtf.setText(tp.toString();elsejtf.se
7、tText(“);(分数:40.00)_三、综合应用题(总题数:1,分数:30.00)3.本题是一个计时器。窗口中有 1 个文字标签和 3 个按钮,名为“复位”、“开始”和“暂停”,初始状态时只有“开始”按钮可用,单击该按钮开始计时,并且“开始”按钮的标签变为“继续”且不可用,“暂停”按钮变为可用,单击“暂停”按钮后“暂停”按钮变为不可用,“复位”和“继续”按钮变为可用,此时如果单击“复位”按钮将恢复到初始状态,如果单击“继续”按钮,则继续进行计数。import java.awt.*;import java.awt.event.*;public class java3 extends Fram
8、e extends RunnableLabel timeDisp=new Label(“0:0“,Label.CENTER);Thread timerThread;int time=0;Button btReset=new Button(“复位“);Button btStart=new Button(“开始“);Button btStop=new Button(“暂停“);java3()super(“java3“);Panel p=new Panel(new GridLayout(1,0);btReset.setEnabled(false);btStop.setEnabled(true);ad
9、dWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););btReset.addActionListener(new ResetListener();btStop.addActionListener(new StopListener();btStart.addActionListener(new StartListener();p.add(btReset);p.add(btStart);p.add(btStop);add(p,BorderLayout.SOUTH);ti
10、meDisp.setFont(new Font(“Courier“,Font.BOLD,60);add(timeDisp,BorderLayout.CENTER);pack();show();void stop()Thread t=timerThread;if(t!=null)timerThread=null;tryt.join();catch(Exception e)public void run()while(timerThread=Thread.currentThread()timeDisp.setText(“+time/10+“:“+time%10+“0“);time+;tryThre
11、ad.sleep(100);catch(Exception e);class ResetListener implements ActionListenerpublic void actionPerformed(ActionEvent evt)this.stop();timeDisp.setText(“0:0“);time=0;btReset.setEnabled(false);btStart.setEnabled(true);btStop.setEnabled(false);btStart.setLabel(“开始“);class StopListener implements Action
12、Listenerpublic void actionPerformed(ActionEvent evt)java3.this.stop();btReset.setEnabled(true);btStart.setEnabled(true);btStop.setEnabled(false);btStart.setLabel(“继续“);class StartListener implements ActionListenerpublic void actionPerforrned(ActionEvent evt)timerThread=new Thread(java3.this);timerTh
13、read.start();btReset.setEnabled(false);btStart.setEnabled(false);btStop.setEnabled(true);btStart.setLabel(“继续“);static public void main(Stringargs)new java3();(分数:30.00)_二级 JAVA 机试-70 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题的功能是计算二维数组 arr=34,21,45,67,20),(23,10,3,45,76,22,3,79,56,50 中的最
14、小值,并输出。public class java1public static void main(Stringargs)int arr=34,21,45,67,20,23,10,3,45,76,22,3,79,56,50;int i=0;int j=0;int min=arr00;while(i3)while(_)if(arrijmin)min=arrij;j+;_;_;System.out.println(“The min:“+min);(分数:30.00)_正确答案:(第 1 处:j5 或 j=4第 2 处:j=0第 3 处:i+或 i+=1 或 i=i+1)解析:解析 整个程序是要将最小
15、的数组元素放到 min 里并输出。思路是将二维数组看成一维然后逐个遍历。第 1 处因为数组一共有 5 列;第 2 处、第 3 处为遍历同样看做一维数组的下一组数据元素,并做归零或加 1 运算。二、简单应用题(总题数:1,分数:40.00)2.本题是一个 Applet,它显示了一个树型结构。单击树结点的时候,就能将其子结点展开,同时下面的文本框可以显示出所单击的结点的路径,比如单击了根结点下 B 结点下 B2 结点,则文本框显示为“TOP,B,B2”。import java.awt.*;import java.awt.event.*;import javax.swing.*;import jav
16、ax.swing.tree.*;public class java2 extends JAppletJTree tree;JTextField jtf;public void init()Container cp=getContentPane();cp.setLayout(new BorderLayout();_top=new DefauhMutableTreeNode(“TOP“);DefauhMutableTreeNode a=new DefaultMutableTreeNode(“A“);DefaultMutableTreeNode a1=new DefaultMutableTreeNo
17、de(“A1“);a.add(a1);DefaultMutableTreeNode a2=new DefaultMutableTreeNode(“A2“);a.add(a2);DefaultMutableTreeNode a3=new DefauhMutableTreeNode(“A3“);a.add(a3);DefaultMutableTreeNode b=new DefaultMutableTreeNode(“B“);DefaultMutableTreeNode b1=new DefaultMutableTreeNode(“B1“);b.add(b1);DefaultMutableTtee
18、Node b2=new DefaultMutableTreeNode(“B2“);b.add(b2);DefaultMutableTreeNode b3=new DefaultMutableTreeNode(“B3“);b.add(b3);top.add(a);top.add(b);tree=new JTree(top);int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane jsp=new JScrol
19、lPane(tree,v,h);cp.add(jsp,BorderLayout.CENTER);jtf=new JTextField(20);cp.add(jtf,BorderLayout.SOUTH);tree.addMouseListener(new MouseAdapter()public void mouseClicked(MouseEvent me)doMouseClicked(me););void doMouseClicked(MouseEvent me)_tp=tree.getPathForLocation(me.getX(),me.getY();if(tp!=null)jtf.
20、setText(tp.toString();elsejtf.setText(“);(分数:40.00)_正确答案:(第 1 处:DefaultMutableTreeNode第 2 处:TreePath)解析:解析 第 1 处创建一个内容为 TOP 的 top 树结点;第 2 处因为 getPathForLocation(int x,int y)返回由参数 x、y 来确定指定位置的结点路径。三、综合应用题(总题数:1,分数:30.00)3.本题是一个计时器。窗口中有 1 个文字标签和 3 个按钮,名为“复位”、“开始”和“暂停”,初始状态时只有“开始”按钮可用,单击该按钮开始计时,并且“开始”按
21、钮的标签变为“继续”且不可用,“暂停”按钮变为可用,单击“暂停”按钮后“暂停”按钮变为不可用,“复位”和“继续”按钮变为可用,此时如果单击“复位”按钮将恢复到初始状态,如果单击“继续”按钮,则继续进行计数。import java.awt.*;import java.awt.event.*;public class java3 extends Frame extends RunnableLabel timeDisp=new Label(“0:0“,Label.CENTER);Thread timerThread;int time=0;Button btReset=new Button(“复位“)
22、;Button btStart=new Button(“开始“);Button btStop=new Button(“暂停“);java3()super(“java3“);Panel p=new Panel(new GridLayout(1,0);btReset.setEnabled(false);btStop.setEnabled(true);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););btReset.addActionListener(new Re
23、setListener();btStop.addActionListener(new StopListener();btStart.addActionListener(new StartListener();p.add(btReset);p.add(btStart);p.add(btStop);add(p,BorderLayout.SOUTH);timeDisp.setFont(new Font(“Courier“,Font.BOLD,60);add(timeDisp,BorderLayout.CENTER);pack();show();void stop()Thread t=timerThr
24、ead;if(t!=null)timerThread=null;tryt.join();catch(Exception e)public void run()while(timerThread=Thread.currentThread()timeDisp.setText(“+time/10+“:“+time%10+“0“);time+;tryThread.sleep(100);catch(Exception e);class ResetListener implements ActionListenerpublic void actionPerformed(ActionEvent evt)th
25、is.stop();timeDisp.setText(“0:0“);time=0;btReset.setEnabled(false);btStart.setEnabled(true);btStop.setEnabled(false);btStart.setLabel(“开始“);class StopListener implements ActionListenerpublic void actionPerformed(ActionEvent evt)java3.this.stop();btReset.setEnabled(true);btStart.setEnabled(true);btSt
26、op.setEnabled(false);btStart.setLabel(“继续“);class StartListener implements ActionListenerpublic void actionPerforrned(ActionEvent evt)timerThread=new Thread(java3.this);timerThread.start();btReset.setEnabled(false);btStart.setEnabled(false);btStop.setEnabled(true);btStart.setLabel(“继续“);static publi
27、c void main(Stringargs)new java3();(分数:30.00)_正确答案:(第 1 处:public class java3 extends Frame第 2 处:btStop.setEnabled(false)第 3 处:java3.this.stop()解析:解析 第 1 处定义一个继承了 Frame 窗口类的 java3 类;第 2 处暂停按钮 stStop 的 setEnable 属性为 false,不可用;第 3 处是单击“复位”调用 stop()方法停止计时;ResetListener 主要作用是当用户单击“复位”时,它首先停止计时然后将时间清零,最后修改各个按钮的状态,即是否可用的状态修改。