1、国家二级( JAVA)机试模拟试卷 30及答案与解析 一、简单应用题( 40分) 1 请完成下列 Java程序;创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击 Start按钮开始进度条的滚动,点击 Stop按钮,暂停,继续点击 Start按钮则继续进行。 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下: import javax swing *; import javax swing event *; import java awt *; import java awt event *; public clas
2、s ex22_2 extends JPanel ThreadProg thProgress; JProgressBar jpb; /声明一个进程条对象 static JFrame if; public ex22_2() setLayout(new BorderLayout(); jpb=new JProgressBar(); add(jpb, “Center“); JPanel btnPanel = new JPanel(); JButton btnStart = new JButton(“Start“); btnPanel.add(btnStart); btnStart.addActionL
3、istener(new ActionListener() public void actionPerformed(ActionEvent ae) _; ); JButton btnStop = new JButton(“Stop“); btnPanel.add(btnStop); btnStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) _; ); add(btnPanel, BorderLayout. SOUTH); public void startProgress(
4、) if(thProgress = null| !thProgress.isAlive() thProgress = new ThreadProg(jpb); thProgress.start(); public void stopProgress() thProgress.setStop(true); public static void main(String args) jf = new JFrame(“ex22_2“); ex22_2 obj22_2 = new ex22_2(); jf.getContentPane().add(“Center“,obj22_2); jf.setSiz
5、e(250,80); jf.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) System.exit(O); ); jf.setVisible(true); class ThreadProg extends Thread private JProgressBar jpb; private boolean bStop = false; private boolean bAlive = false; public ThreadProg(JProgressBar jpb) this.jpb
6、= jpb; public void setStop(boolean b) bStop = b; public void run () int min = 0; int max = 60; jpb.setMinimum(min); jpb.setMaximum(max); jpb.setValue(min); for (int x=min;x=max;x+) ( if(bStop) break; else jpb. setValue (x); try Thread. sleep (150); catch (InterruptedException e) bAlive = false; 二、综合
7、应用题( 30分) 2 下面是一个 Applet程序,其功能是输入 3个双精度浮点数: a, b, c,构成一个一元二次方程, a*x*x+b*x+c=0,其判别式 d=b*b-4*a*c,若 d为负数则输出 “没有实根 ”,否则打印出 2个实根。要求,有 3个输入框,输入 a, b, c,一个按钮,点击实现求根过程,一个不可编辑的文本区,用作输出结果。请改正程序中的错误(有下划 线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: import java.io.*; import java.awt.*; import java.awt.even
8、t.*; import.java.applet.Applet; /* applet code=“ex21_3.class“ width=800 height=400 /applet */ public class ex21_3 extends Applet implements ActionListener Panel pane=new Panel(); Label 11 = new Label(“a:“); TextField tf1 = new TextField(5); Label 12 = new Label(“b:“); TextField tf2 = new TextField(5
9、); Label 13 = new Label(“c:“); TextField tf3 = new TextField(5); Button btn = new Button(“OK“); Label 14=new Label(“答案 :“); TextField tf4=new TextField(20); ex21_3 obj21_3; public void init() pane.setLayout(new FlowLayout(FlowLayout.LEFT, 10,5); pane.add(11); pane.add(tf1); pane.add(12); pane.add(tf
10、2); add(“North“,pane); Panel p2=new Panel(); p2.setLayout(new FlowLayout(FlowLayout.LEFT,10,5); p2.add(13); p2.add(tf3); p2.add(btn); btn.addActionListener(this); add(“Center“,p2); Panel p3=new Panel(); p3.setLayout(new FlowLayout(FlowLayout.LEFT,10,5); p3.add(14); tf4.setEditable(false); p3.add(tf4
11、); add(“South“,p3); obj21_3=new ex21_3(); public void doReal(double a1,double a2,double a3,TextField tf) double d,x1,x2; d=a1*a1-4.0*a2*a3; if(d =0.0) x1=(-a2+Math.sqrt(d)/(2.0*a1); x2=(-a2+Math.sqrt(d)/(2.0*a1); tf.setText(“2个实根 : x1=“+x1+“nx2=“+x2); else tf.setText(“没有实根 ! “); public void actionPe
12、rformed(ActionEvent ae) double a,b,c; try a=new Double(tf1.getText().doubleValue(); b=new Double(tf2.getText().doubleValue(); c=new Double(tf3.getText().doubleValue(); obj21_3.doReal(a,b,c,14); catch(NumberFormatException nfe) tf4.setText(“wrong number!“); ex21_3 . htm1 HTML HEAD TITLE ex21_3 /TITLE
13、 /HEAD BODY applet code=“ex21_3.class“ width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 30答案与解析 一、简单应用题( 40分) 1 【正确答案】 startProgress() stopProgress() 【试题解析】 本题主要考查 swing图形用户界面编程以及多线程编程相结合。解题关键是掌握进度条 JProgressBar类的基本用法及其与多线程相结合的编程方法,会继承 Thread类写自己的线程类,完成需要的功能,线程的开始与暂停被封装在 ThreadProg类中。本题中,第
14、 1个空,根据点击 Start按钮事件调用startProgress()方法启动线程;第 2个空,根据点击 Stop按钮事件调用stopProgress()方法暂停线程。 二、综合应用题( 30分) 2 【正确答案】 d=a2*a2-4.0*a1*a3 x2=(-a2-Math sqrt(d)/(2.0*a1) obj21_3 doReal(a, b, c, tf4) 【试题解析】 本题主要考查 Applet窗口编程和 AWT基本构件的使用和事件处理机制以及一元二次方程组的求根公式。解题关键是熟悉基本组件 Button,Panel, Label等的用法和事件处理机制,熟悉一元二次方程组的求解,会使用Math类中给出的常用方法进行简单的数学计算。本题中,第 1处,求判别式,注意判别式的公式是 d=b*b-4*a*c,弄清楚 doReal()方法中的参数对应的关系;第 2处,求根公式的表示,应该 -a2-Math.sqrt(d),否则,两个根一样;第 3处,对象obj21_3调用 doReal()方法时, 注意,最后 1个参数是 TextField类的对象,而不是 Label类的对象。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1