1、国家二级(JAVA)机试-试卷 42 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.“角谷猜想”指出将一个自然数按以下的规则进行运算:若数为偶数,则除以 2;若为奇数乘 3 加 1。将得到的数按该规则重复运算,最终可得 1。请在下面程序得每条横线处填写一和语句,使程序的功能完整。(如:输入 34,则输出结果为 34 17 52 26 13 40 20 10 5 16 8 4 2 1) 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填人适当的语句。 import java.io.*;
2、class JiaoGu public static void main(String args) System.out.print(“/n 请输入一个数“); try BufferedReader br=new BufferedReader(new lnputStreamReader(System.in); String s=“ “; try s=br.readline(); catch (IOExceptine) _ while(a! =1) System.out.print(“ “+a);if(a%2=1) _ else a=a/2; System.out.println(“ “+a);
3、 _ (分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.请完成下列 Java 程序:创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击开始按钮开始进度条的滚动,点击停止按钮,暂停,继续点击开始按钮则继续进行。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class ex15_
4、2 extends JPanel ThreadProg thProgress; JProgressBar jPb;/声明一个进程条对象 static JFrame jf; public ex15_2() setLayout(new BorderLayout(); jPb=new JProgressBar(); add(jpb,“Center“); JPanel btnPanel=new JPanel(); JButton btnStart=new JButton(“开始“); btnPanel.add(btnStart); btnStart.addActionListener(new Acti
5、onListener() public void actionPerformed(ActionEvent ae) _; ); JButton btnStop=new JButton(“停止“); btnPanel.add(btnStop); btnStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) _; ); add(btnPanel,BorderLayout.SOUTH); public void startProgress() if(thProgress=null|!
6、thProgress.isAlive() thProgress=new ThreadProg(jpb); thProgress.start(); public void stopProgress() thProgress.setStop(true); pubUc static VOid main(String args) jf=new JPrame(“ex15_2“);ex15_2 obj15_2=new ex15_2(); jf.getContentPane().add(“Center“,obj15_2); jf.setSize(250,80); jf.addWindowListener(n
7、ew WindowAdapter() pubhc void windowClosing(WindowEvent we) System.exit(0); ); jf.setVisible(true); class ThreadProg extends Thread private JProgressBar jpb; private boolean bStop=false; private boolean bAlive=false; pubhc ThreadProg(JProgressBar jpb) this.jpb=jpb; public VOid setStop(boolean b) bSt
8、op=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; (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.下面是一个 App
9、let 程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示区和一个按钮,点击按钮,可以声文本区已有的文本基础上追加显示 10 条“Welcome to China!”信息,并且文本区由滚动条控制文本的上下滚动。请改正程序中的错误(有下画线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 import javax.swing.*; import java.awt.*; import java.awt.event.*; /* applet code=“exl3_4.class“width=800 height=400 /applet */ public clas
10、s exl4_3 extends JApplet JButton jb=new JButton(“Add Text“); JTextPane jtp=new JTextPane(); public void init() jb.addActionListener(new Ac60nListener() pubhc void actionPerformed(ActionEvent e) for(int i=1;i_国家二级(JAVA)机试-试卷 42 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.“角
11、谷猜想”指出将一个自然数按以下的规则进行运算:若数为偶数,则除以 2;若为奇数乘 3 加 1。将得到的数按该规则重复运算,最终可得 1。请在下面程序得每条横线处填写一和语句,使程序的功能完整。(如:输入 34,则输出结果为 34 17 52 26 13 40 20 10 5 16 8 4 2 1) 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填人适当的语句。 import java.io.*; class JiaoGu public static void main(String args) System.out.print(“/n 请输入一个数“); try Buffe
12、redReader br=new BufferedReader(new lnputStreamReader(System.in); String s=“ “; try s=br.readline(); catch (IOExceptine) _ while(a! =1) System.out.print(“ “+a);if(a%2=1) _ else a=a/2; System.out.println(“ “+a); _ (分数:2.00)_正确答案:(正确答案:int a=Integef.parseInt(s); a=a*3+1; catch(Exception e)解析:二、简单应用题(总
13、题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.请完成下列 Java 程序:创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击开始按钮开始进度条的滚动,点击停止按钮,暂停,继续点击开始按钮则继续进行。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class ex15_2 extends JPanel Th
14、readProg thProgress; JProgressBar jPb;/声明一个进程条对象 static JFrame jf; public ex15_2() setLayout(new BorderLayout(); jPb=new JProgressBar(); add(jpb,“Center“); JPanel btnPanel=new JPanel(); JButton btnStart=new JButton(“开始“); btnPanel.add(btnStart); btnStart.addActionListener(new ActionListener() public
15、 void actionPerformed(ActionEvent ae) _; ); JButton btnStop=new JButton(“停止“); btnPanel.add(btnStop); btnStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) _; ); add(btnPanel,BorderLayout.SOUTH); public void startProgress() if(thProgress=null|!thProgress.isAlive(
16、) thProgress=new ThreadProg(jpb); thProgress.start(); public void stopProgress() thProgress.setStop(true); pubUc static VOid main(String args) jf=new JPrame(“ex15_2“);ex15_2 obj15_2=new ex15_2(); jf.getContentPane().add(“Center“,obj15_2); jf.setSize(250,80); jf.addWindowListener(new WindowAdapter()
17、pubhc void windowClosing(WindowEvent we) System.exit(0); ); jf.setVisible(true); class ThreadProg extends Thread private JProgressBar jpb; private boolean bStop=false; private boolean bAlive=false; pubhc ThreadProg(JProgressBar jpb) this.jpb=jpb; public VOid setStop(boolean b) bStop=b; public void r
18、un() 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; (分数:2.00)_正确答案:(正确答案:startProgress() stopProgress()解析:三、综合应用题(总题数:2,分数:4.00)5.综合应
19、用题()(分数:2.00)_解析:6.下面是一个 Applet 程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示区和一个按钮,点击按钮,可以声文本区已有的文本基础上追加显示 10 条“Welcome to China!”信息,并且文本区由滚动条控制文本的上下滚动。请改正程序中的错误(有下画线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 import javax.swing.*; import java.awt.*; import java.awt.event.*; /* applet code=“exl3_4.class“width=800 heigh
20、t=400 /applet */ public class exl4_3 extends JApplet JButton jb=new JButton(“Add Text“); JTextPane jtp=new JTextPane(); public void init() jb.addActionListener(new Ac60nListener() pubhc void actionPerformed(ActionEvent e) for(int i=1;i_正确答案:(正确答案:setText(jtp.getText() +“Welcome to China! /n“) cp.add(BorderLayout.SOUTH,jb) frm.getContentPane().add(obj14_3)解析: