1、二级 JAVA 机试 52 及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.请在每条横线处填写一个语句,使程序的功能完整,且输出结果为 911。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class Outer public static void main(String args) Outer i=new Outer(); i.taskInner(); public class lnner private int size; public void doSomething(
2、int size) _/访问局部变量 this.size+;/访问内部类的成员变量 _/访问外部类的成员变量 System.out.println(size+“ “+this.size+“ “+Outer.this.size); public void tasklnner() _ k.doSomething(8); private static int size; (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java 程序:创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击开始按钮开始进度条的滚动,点击停止按钮,暂停,继
3、续点击开始按钮则继续进行。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class ex15_2 extends JPanel ThreadProg thProgress; JProgressBar jPb;/声明一个进程条对象 static JFrame jf; public ex15_2() setLayout(new BorderLayout();
4、jPb=new JProgressBar(); add(jpb,“Center“); JPanel btnPanel=new JPanel(); JButton btnStart=new JButton(“开始“); btnPanel.add(btnStart); btnStart.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) _; ); JButton btnStop=new JButton(“停止“); btnPanel.add(btnStop); btnStop.add
5、ActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) _; ); add(btnPanel,BorderLayout.SOUTH); public void startProgress() if(thProgress=null|!thProgress.isAlive() thProgress=new ThreadProg(jpb); thProgress.start(); public void stopProgress() thProgress.setStop(true); public
6、 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() pubhc void windowClosing(WindowEvent we) System.exit(0); ); jf.setVisible(true); class ThreadProg extends Thread
7、 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 run() int min=0; int max=60; jpb.setMinimum(min); jpb.setMaximum(max); jpb.setValue(min); for(int x=min;x=max;x+)
8、 if(bStop) break; else jpb.setValue(x); try Thread.sleep(150); catch(InterruptedException e) bAlive=false; (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是在窗口中绘制 3 个半径递增的圆,并用 RGB 三原色对这 3 个圆填充。要求建立一个绘制圆的类,实现根据指定颜色进行填充的功能,在主程序中通过调用这个类的方法实现圆的绘制。请改正程序中的错误(有下画线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得
9、增行或删行。 import java.applet.*; import java.awt.*; import java.awt.*; /* applet code=“ex15_3.class“width=800 height=400 /applet */ class CanvasCircle extends Canvas private Color cCircle; public CanvasCircle(Color c) cCircle=c; public void paint(Graphics g) int dimCircle,xCircle,yCircle; Dimension size
10、Current=getSize(); if(UsizeCurrent.widthsizeCurrent.height)/U dimCircle=sizeCurrent.width; else dimCircle=sizeCurrent.height; g.setColor(cCircle); UxCircle=(sizeCurrent.heighe-dimCircle)/2;/U UyCircle=(sizeCurrent.width-dimCircle)/2;/U g.fillOval(xCircle,yCircle,dimCircle,dimCircle); public class ex
11、l5_3 extends Applet public void init() GridBagLayout gbl=new GddBagLayout(); GridBagConstraints gbc=new CridBagConstraints(); CanvasCircle circleNew; setLayout(gbl); gbc.weightx=1.0; gbc.weighty=1.0; gbc.fill=GridBagConstraints.BOTH; circleNew=new CanvasCircle(Color.red); gbl.setConstraints(circleNe
12、w,gbc); add(circleNeW); gbc.weightx=1.5; gbc.weighty=1.5; circleNew=new CanvasCircle(Color.green); gbl.sctConstraints(eircleNew,gbc); add(circleNew);gbc.weightx=2.0; gbc.weighty=2.0; circleNew=new CanvasCircle(Color.blue); gbl.setConstraints(circleNew,gbc); add(circleNew); ex15_3.html HTML HEAD TITL
13、Eex15_3/TITLE /HEAD BODY applet code=“ex15_3.class“width=800 height=400 /applet /BODY /HTMI(分数:30.00)_二级 JAVA 机试 52 答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.请在每条横线处填写一个语句,使程序的功能完整,且输出结果为 911。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class Outer public static void main(String ar
14、gs) Outer i=new Outer(); i.taskInner(); public class lnner private int size; public void doSomething(int size) _/访问局部变量 this.size+;/访问内部类的成员变量 _/访问外部类的成员变量 System.out.println(size+“ “+this.size+“ “+Outer.this.size); public void tasklnner() _ k.doSomething(8); private static int size; (分数:30.00)_正确答案
15、:()解析:size+; Outer.this.size+; Inner k=new lnner();二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java 程序:创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击开始按钮开始进度条的滚动,点击停止按钮,暂停,继续点击开始按钮则继续进行。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.eve
16、nt.*; public class ex15_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.ad
17、dActionListener(new ActionListener() 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 startProgres
18、s() 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 JPrame(“ex15_2“);ex15_2 obj15_2=new ex15_2(); jf.getContentPane().add(“Center“,obj15_2); jf.setSize(250,80
19、); jf.addWindowListener(new 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 VO
20、id 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; (分数:40.00)_正确答案:()解析:startProgress()
21、stopProgress()三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是在窗口中绘制 3 个半径递增的圆,并用 RGB 三原色对这 3 个圆填充。要求建立一个绘制圆的类,实现根据指定颜色进行填充的功能,在主程序中通过调用这个类的方法实现圆的绘制。请改正程序中的错误(有下画线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 import java.applet.*; import java.awt.*; import java.awt.*; /* applet code=“ex15_3.class“width=80
22、0 height=400 /applet */ class CanvasCircle extends Canvas private Color cCircle; public CanvasCircle(Color c) cCircle=c; public void paint(Graphics g) int dimCircle,xCircle,yCircle; Dimension sizeCurrent=getSize(); if(UsizeCurrent.widthsizeCurrent.height)/U dimCircle=sizeCurrent.width; else dimCircl
23、e=sizeCurrent.height; g.setColor(cCircle); UxCircle=(sizeCurrent.heighe-dimCircle)/2;/U UyCircle=(sizeCurrent.width-dimCircle)/2;/U g.fillOval(xCircle,yCircle,dimCircle,dimCircle); public class exl5_3 extends Applet public void init() GridBagLayout gbl=new GddBagLayout(); GridBagConstraints gbc=new
24、CridBagConstraints(); CanvasCircle circleNew; setLayout(gbl); gbc.weightx=1.0; gbc.weighty=1.0; gbc.fill=GridBagConstraints.BOTH; circleNew=new CanvasCircle(Color.red); gbl.setConstraints(circleNew,gbc); add(circleNeW); gbc.weightx=1.5; gbc.weighty=1.5; circleNew=new CanvasCircle(Color.green); gbl.s
25、ctConstraints(eircleNew,gbc); add(circleNew);gbc.weightx=2.0; gbc.weighty=2.0; circleNew=new CanvasCircle(Color.blue); gbl.setConstraints(circleNew,gbc); add(circleNew); ex15_3.html HTML HEAD TITLEex15_3/TITLE /HEAD BODY applet code=“ex15_3.class“width=800 height=400 /applet /BODY /HTMI(分数:30.00)_正确答案:()解析:sizeCurrent.widthsizeCurrent.height xCircle=(sizeCurrent.width-dimCircle)/2 yCircle=(sizeCurrent.height-dimCircle)/2