1、二级 JAVA 机试-72 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题的功能是计算 110 之间除了 5 以外的各个自然数的和。public class java1public static void main(Stringargs)int i=1;int sum=0;while(i=10)if(i=5)_;_;_;i+;System.out.println(“sum=“+sum);(分数:30.00)_二、简单应用题(总题数:1,分数:40.00)2.本题的功能是监听键盘敲击事件,并将敲击的字符显示在标签上。开始,文字标签提示
2、“Please press your keyboard!”,当按下键盘上的字符键,文字标签就变为“*is pressed!”(*为所按字母)。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class java2 extends Frame_public static void main(String args)java2 f=new java2(“java2“);Panel pan=new Panel();f.init();public java2(String str)super(str);publ
3、ic void init()addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setSize(200,200);setLayout(new FlowLayout();lab=new Label(“Please press your keyboard!“);add(lab);addKeyListener(this);setVisible(true);public void keyTyped(KeyEvent e)lab.setText(“/“+_+“/is p
4、ressed!“);repaint();public void keyPressed(KeyEvent e)public void keyReleased(KeyEvent e)private Label lab;(分数:40.00)_三、综合应用题(总题数:1,分数:30.00)3.本题的功能是求两个交叉图形的并、减、交和异或。窗口中有 4 个单选按钮和一个图形面板,面板中有两个交叉的图形,选中其中一个单选按钮,图形面板中以黑色填充的方式显示运算结果。import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import
5、 java.util.*;import javax.swing.*;public class java3public static void main(Stringargs)JFrame frame=new AreaTestFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();class AreaTestFrame extends JFramepublic AreaTestFrame()setTitle(“java3“);setSize(WIDTH,HEIGHT);areal=new Area(new
6、 Ellipse2D.Double(100,100,150,100);area2=new Area(new Rectangle2D.Double(150,150,150,100);Container confentPane=getContentpane();panel=newJPanel()public void paintComponent(Graphics g)super.paintComponent(g);Graphics2D g2=(Graphics2D)g;g2.draw(area1);g2.draw(area2);if(area!=null)g2.fill(area);conten
7、tPane.add(panel,BorderLayout.CENTER);JPanel buttonPanel=new JPanel();ButtonGroup group=new ButtonGroup();JRadioButton addButton=new JRadioButton(“并“,false);buttonPanel.add(addButton);group.add(addButton);addButton.addActionListener(newActionListener()public void actionPerformed(AetionEvent event)are
8、a=new Area();area.add(area1);area.add(area2);panel.repaint(););JRadioButton subtractButton=new JRadioButton(“减“,false);buttonPanel.add(subtractButton);group.add(subtractButton);subtractButton.addActionListener(newActionListener()public void actionPerformed(ActionEvent event)area=new Area();area.add(
9、area1);area.subTract(area2);panel.repaint(););JRadioButton intersectButton=new JRadioButton(“交“,false);buttonPanel.add(intersectButton);group.add(intersectButton);intersectButton.addActionListener(newActionListener()public void actionPerformed(ActionEvent event)area=new Area();area.add(area1);area.i
10、nterseet(area2);panel.repaint(););JRadioButton exclusiveOrButton=new JRadioButton(“异或“,false);buttonPanel.add(exclusiveOrButton);group.add(exclusiveOrButton);exclusiveOrButton.addActionListener(newActionListener()public void actionPerformed(ActionEvent event)area=new Area();area.add(area1);area.excl
11、usiveor(area2);panel.repaint(););contentPane.add(buttonPanel,BorderLayout.NORTH);private JPanel panel;private Area area;private Area area1;private Area area2;private static final int WIDTH=400;private static final int HEIGHT=400;(分数:30.00)_二级 JAVA 机试-72 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.
12、00)1.本题的功能是计算 110 之间除了 5 以外的各个自然数的和。public class java1public static void main(Stringargs)int i=1;int sum=0;while(i=10)if(i=5)_;_;_;i+;System.out.println(“sum=“+sum);(分数:30.00)_正确答案:(第 1 处:i=i+1 或 i+或 i+=1第 2 处:continue第 3 处:sum+=i 或 sum=sum+i)解析:解析 第 1 处 while 循环是累加 110 之间除了 5 的自然数之和,将 i 加 1 是为了跳过 5
13、;第 2处当 i 等于 5 时就跳出本次循环;第 3 处累加 110 之间除了 5 的自然数的和将其最终赋给 sum。二、简单应用题(总题数:1,分数:40.00)2.本题的功能是监听键盘敲击事件,并将敲击的字符显示在标签上。开始,文字标签提示“Please press your keyboard!”,当按下键盘上的字符键,文字标签就变为“*is pressed!”(*为所按字母)。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class java2 extends Frame_public stat
14、ic void main(String args)java2 f=new java2(“java2“);Panel pan=new Panel();f.init();public java2(String str)super(str);public void init()addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setSize(200,200);setLayout(new FlowLayout();lab=new Label(“Please pres
15、s your keyboard!“);add(lab);addKeyListener(this);setVisible(true);public void keyTyped(KeyEvent e)lab.setText(“/“+_+“/is pressed!“);repaint();public void keyPressed(KeyEvent e)public void keyReleased(KeyEvent e)private Label lab;(分数:40.00)_正确答案:(第 1 处:implements KeyListener第 2 处:e.getKeyChar()解析:解析
16、第 1 处实现键盘监听接口;第 2 处键盘事件对象 e 调用 getKeyChar()方法获得用户按下的键盘键值。三、综合应用题(总题数:1,分数:30.00)3.本题的功能是求两个交叉图形的并、减、交和异或。窗口中有 4 个单选按钮和一个图形面板,面板中有两个交叉的图形,选中其中一个单选按钮,图形面板中以黑色填充的方式显示运算结果。import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.util.*;import javax.swing.*;public class java3public st
17、atic void main(Stringargs)JFrame frame=new AreaTestFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();class AreaTestFrame extends JFramepublic AreaTestFrame()setTitle(“java3“);setSize(WIDTH,HEIGHT);areal=new Area(new Ellipse2D.Double(100,100,150,100);area2=new Area(new Rectang
18、le2D.Double(150,150,150,100);Container confentPane=getContentpane();panel=newJPanel()public void paintComponent(Graphics g)super.paintComponent(g);Graphics2D g2=(Graphics2D)g;g2.draw(area1);g2.draw(area2);if(area!=null)g2.fill(area);contentPane.add(panel,BorderLayout.CENTER);JPanel buttonPanel=new J
19、Panel();ButtonGroup group=new ButtonGroup();JRadioButton addButton=new JRadioButton(“并“,false);buttonPanel.add(addButton);group.add(addButton);addButton.addActionListener(newActionListener()public void actionPerformed(AetionEvent event)area=new Area();area.add(area1);area.add(area2);panel.repaint();
20、);JRadioButton subtractButton=new JRadioButton(“减“,false);buttonPanel.add(subtractButton);group.add(subtractButton);subtractButton.addActionListener(newActionListener()public void actionPerformed(ActionEvent event)area=new Area();area.add(area1);area.subTract(area2);panel.repaint(););JRadioButton in
21、tersectButton=new JRadioButton(“交“,false);buttonPanel.add(intersectButton);group.add(intersectButton);intersectButton.addActionListener(newActionListener()public void actionPerformed(ActionEvent event)area=new Area();area.add(area1);area.interseet(area2);panel.repaint(););JRadioButton exclusiveOrBut
22、ton=new JRadioButton(“异或“,false);buttonPanel.add(exclusiveOrButton);group.add(exclusiveOrButton);exclusiveOrButton.addActionListener(newActionListener()public void actionPerformed(ActionEvent event)area=new Area();area.add(area1);area.exclusiveor(area2);panel.repaint(););contentPane.add(buttonPanel,
23、BorderLayout.NORTH);private JPanel panel;private Area area;private Area area1;private Area area2;private static final int WIDTH=400;private static final int HEIGHT=400;(分数:30.00)_正确答案:(第 1 处:Container contentPane=getContentPane()第 2 处:area.subtract(area2)第 3 处:area.exclusiveOr(area2)解析:解析 第 1 处用 getContentPane()获得内容面板;第 2 处表示从 area 形状中减去 area2 形状;第 3 处将 area 设置为 area 形状和 area2 形状的组合,并减去相交部分。