1、二级 JAVA 机试-122 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题定义了一个求两个数的最大值的方法 max,并调用该方法计算 67 和 23 的最大值。public class java1public static void main(Stringargs)java1 temp=new java1();int res=max(67,23);System.out.println(“res=“+res);static int max(_)int maxNum;if(ab)_;elsemaxNum=b;_;(分数:30.00)_
2、二、简单应用题(总题数:1,分数:40.00)2.本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按钮“删除”和“添加”,选中下拉菜单的一项后,可以通过“删除”按钮从下拉菜单中删除该项,在文本框中填入字符串后,单击“添加”按钮就可以将该项添加到下拉菜单中,所有信息都将显示在右侧的文本域中。import java.awt.*;import java.awt.event.*;public class java2 extends java.applet.Applet implements ItemListener,ActionListenerChoice cho
3、ice;TextField text;TextArea area;Button add.del;public void ink()choice=new Choice();text=new TextField(8);area=new TextArea(6,15);choice.add(“音乐天地“);choice.add(“武术天地“);choice.add(“象棋乐园;);choice.add(“交友聊天“);add=new Button(“添加“);del=new Button(“删除“);add.addActionListener(this);del.addActionListener(t
4、his);choice.addItemListener(this);add(choice);add(del);add(text);add(add);add(area);public void itemStateChanged(ItemEvent e)String name=_;int index=choice.getSelectedIndex();area.setText(“/n“+index+“:“+name);public void actionPerformed(ActionEvent e)if(e.getSource()=add|e.getSource()=text)String na
5、me=text.getText();if(name.length()0)choice.add(name);choice.select(name);area.append(“/n 添加“+name);else if(e.getSource()=del)choice.remove(_);area.append(“/n 删除“+choice.getSelectedItem();(分数:40.00)_三、综合应用题(总题数:1,分数:30.00)3.本题的功能是定义自己的组件类。窗口中排布着 12 个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击按钮时,后台将显示该按钮对应的字符。import j
6、ava.awt.*;import java.awt.event.*;import java.util.*;class java3 extends FrameString keys=“123456789*0#“;java3()super(“java3“);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setLayout(new GridLayout(4,3,6,6);for(int i=0;ikeyslength;i+)KeyButton kb=new K
7、eyButton(keys.charAt(i);kb.addkeyListener(this);kb.setBackground(Color.pink);kb.setForeground(Color.black);add(kb);setSize(200,200);show();class KeyEventHandler extends KeyAdapterpublic void keyTyped(KeyEvent evt)System.out.println(evt.getChar();public static void main(Stringargs)new java3();class K
8、eyButton extends ComponentKeyListener keyListener;boolean highlighted;char key;KeyButton(char k)this.key=k;addMouseListener(new MouseEventHandler();public void paint(Graphics g)int w=getSize().width;int h=getSize().height;String s=“+key;FontMetrics fm=g.getFontMetrics();if(highlighted)g.setColor(get
9、Background();g.fillRoundRect(0,0,w-1,h-1,10,10);g.setColor(getForeground();g.drawRoundRect(0,0,w-1,h-1,10,10);g.drawstring(s,(w-fm.stringWidth(s)/2,(h-fm.getHeight()/2+fm.getAscent();class MouseEventHandler extends MouseAdapterpublic void mousePressed(MouseEvent evt)if(keyListener!=null)keyListener.
10、keyTyped(new KeyEvent(KeyButton.this,KeyEvent.KEY_TYPED,System.currentTimeMillis(),0,KeyEvent.VK_UNDEFINED,key);public void mouseEntered(MouseEvent evt)highlighted=true;repaint();public void mouseExited(MouseEvent evt)highlighted=false;repaint();public synchronized void addKeyListener(KeyListener 1)
11、keyListener=AWTEventMulticaster.add(keyListener,1);public synchronized void removeKeyListener(KeyListener 1)keyListener=AWTEventMulticaster.remove(keyListener,1);(分数:30.00)_二级 JAVA 机试-122 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题定义了一个求两个数的最大值的方法 max,并调用该方法计算 67 和 23 的最大值。public class jav
12、a1public static void main(Stringargs)java1 temp=new java1();int res=max(67,23);System.out.println(“res=“+res);static int max(_)int maxNum;if(ab)_;elsemaxNum=b;_;(分数:30.00)_正确答案:(第 1 处:int a,int b第 2 处:maxNum=a第 3 处:return maxNum)解析:解析 第 1 处定义 max()方法中的两个整型形参;第 2 处将两者中较大的赋给 maxNum;第 3 处返回最大值。二、简单应用题(
13、总题数:1,分数:40.00)2.本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按钮“删除”和“添加”,选中下拉菜单的一项后,可以通过“删除”按钮从下拉菜单中删除该项,在文本框中填入字符串后,单击“添加”按钮就可以将该项添加到下拉菜单中,所有信息都将显示在右侧的文本域中。import java.awt.*;import java.awt.event.*;public class java2 extends java.applet.Applet implements ItemListener,ActionListenerChoice choice;Text
14、Field text;TextArea area;Button add.del;public void ink()choice=new Choice();text=new TextField(8);area=new TextArea(6,15);choice.add(“音乐天地“);choice.add(“武术天地“);choice.add(“象棋乐园;);choice.add(“交友聊天“);add=new Button(“添加“);del=new Button(“删除“);add.addActionListener(this);del.addActionListener(this);cho
15、ice.addItemListener(this);add(choice);add(del);add(text);add(add);add(area);public void itemStateChanged(ItemEvent e)String name=_;int index=choice.getSelectedIndex();area.setText(“/n“+index+“:“+name);public void actionPerformed(ActionEvent e)if(e.getSource()=add|e.getSource()=text)String name=text.
16、getText();if(name.length()0)choice.add(name);choice.select(name);area.append(“/n 添加“+name);else if(e.getSource()=del)choice.remove(_);area.append(“/n 删除“+choice.getSelectedItem();(分数:40.00)_正确答案:(第 1 处:choice.getSelectedItem()第 2 处:choice.getSelectedIndex()解析:解析 第 1 处是获取当前选中项的数据;第 2 处清除选中项的索引号。三、综合应
17、用题(总题数:1,分数:30.00)3.本题的功能是定义自己的组件类。窗口中排布着 12 个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击按钮时,后台将显示该按钮对应的字符。import java.awt.*;import java.awt.event.*;import java.util.*;class java3 extends FrameString keys=“123456789*0#“;java3()super(“java3“);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e
18、)System.exit(0););setLayout(new GridLayout(4,3,6,6);for(int i=0;ikeyslength;i+)KeyButton kb=new KeyButton(keys.charAt(i);kb.addkeyListener(this);kb.setBackground(Color.pink);kb.setForeground(Color.black);add(kb);setSize(200,200);show();class KeyEventHandler extends KeyAdapterpublic void keyTyped(Key
19、Event evt)System.out.println(evt.getChar();public static void main(Stringargs)new java3();class KeyButton extends ComponentKeyListener keyListener;boolean highlighted;char key;KeyButton(char k)this.key=k;addMouseListener(new MouseEventHandler();public void paint(Graphics g)int w=getSize().width;int
20、h=getSize().height;String s=“+key;FontMetrics fm=g.getFontMetrics();if(highlighted)g.setColor(getBackground();g.fillRoundRect(0,0,w-1,h-1,10,10);g.setColor(getForeground();g.drawRoundRect(0,0,w-1,h-1,10,10);g.drawstring(s,(w-fm.stringWidth(s)/2,(h-fm.getHeight()/2+fm.getAscent();class MouseEventHand
21、ler extends MouseAdapterpublic void mousePressed(MouseEvent evt)if(keyListener!=null)keyListener.keyTyped(new KeyEvent(KeyButton.this,KeyEvent.KEY_TYPED,System.currentTimeMillis(),0,KeyEvent.VK_UNDEFINED,key);public void mouseEntered(MouseEvent evt)highlighted=true;repaint();public void mouseExited(
22、MouseEvent evt)highlighted=false;repaint();public synchronized void addKeyListener(KeyListener 1)keyListener=AWTEventMulticaster.add(keyListener,1);public synchronized void removeKeyListener(KeyListener 1)keyListener=AWTEventMulticaster.remove(keyListener,1);(分数:30.00)_正确答案:(第 1 处:int i=0;ikeys.length();i+第 2 处:kb.addKeyListener(new KeyEventHandler()第 3 处:system.out.println(evt.getKeyChar()解析:解析 第 1 处是作为遍历 keys 中元素的条件,而 keys 中的字符元素就是各个按钮对应的字符。第 2 处注册键盘事件监听功能,KeyButton 实现了 KeyLIstener 接口,而 kb 是 KeyButton 类的对象,所以它是合格的监听者。第 3 处将从键盘读到的字符输出。