1、二级 JAVA 机试-25 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题将数组中 arr=5,6,3,7,9,1 的各个元素按下标的逆序输出。public class java1(public static void main(Stringargs)int arr=5,6,3,7,9,1);_;n=_;while(n=0)System.out.print(arrn+“);_;(分数:30.00)_二、简单应用题(总题数:1,分数:40.00)2.本题中,用表格表现某个月的月历,其中标题是从 Sunday 到 Saturday,表格
2、中的各项是可以修改的。import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;public class java2public static void main(Stringargs)tryUIManager.setLookAndFeeI(UIManager.getSystemLookAndFeelClassName();catch(Exception e)JFrame frame=new CalendarTableFrame();frame.setDefaultClos
3、eOperation(JFrame.EXIT_ON_CLOSE);frame.show();class CalendarTableFrame extends JFrameprivate static final int WIDTH=500;private static final int HEIGHT=150;private_cells=null,null,null,new Integer(1),new Integer(2),new Integer(3),new Integer(4),new Integer(5),new Integer(6),new Integer(7),new Intege
4、r(8),new Integer(9),new Integer(10),new Integer(11),new Integer(12),new Integer(13),new Integer(14),new Integer(15),new Integer(16),new Integer(17),newInteger(18),new Integer(19),new Integer(20),new Integer(21),new Integer(22),new Integer(23),new Integer(24),newInteger(25),new Integer(26),new Intege
5、r(27),new Integer(28),new Integer(29),new Integer(30),new Integer(31),null;private StringcolumnNames=“Sunday“,“Monday“,“Tuesday“,“Wednesday“,“Thursday“,“Friday“,“Saturday“;public CalendarTableFrame()setTitle(“java2“);setSize(WIDTH,HEIGHT);JTable table=new_;getContentPane().add(new JScrollPane(table)
6、,BorderLayout.CENTER);(分数:40.00)_三、综合应用题(总题数:1,分数:30.00)3.本题的功能是用键盘上的方向键来控制直线的绘制方向。如果一直按向上的方向键,则在窗口中从焦点开始向上缓慢绘制直线,按其他方向键也会向对应的方向缓慢地绘制直线,如果按下Shift键的话,绘制直线的速度会加快。import java.awt.*;import java.awt.geom.*;import java.util.*;import java.awt.event.*;import javax.swing.*;public class java3public static voi
7、d main(Stringargs)SketchFrame frame=new SketchFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();class SketchFrame extends JFramepublic SketchFrame()setTitle(“java3“);setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);SketchPanel panel=new SketchPanel();Container contentPane=getContentPane
8、();contentPane.add(panel);public static final int DEFAULT_WIDTH=300;public static final int DEFAULT_HEIGHT=200;class SketchPanel extends JPanelpublic void sketchPanel()last=new Point2D.Double(100,100);lines=new ArrayList();KeyHandler listener=new KeyHandler();addkeyListener(this);setFocusable(true);
9、public void add(int dx,int dy)Point2D end=new Point2D.Double(last.getX()+dx,last.getY()+dy);Line2D line=new Line2D.Double(last,end);lines.add(line);repaint();last=end;public void paintComponent(Graphics g)super.paintComponent(g);Graphics2D g2=(Graphics2D)g;for(int i=0;ilines.size();i+)g2.draw(Line2D
10、)lines.get(i);private Point2D last;private ArrayList lines;private static final int SMALL_INCREMENT=1;private static final int LARGE_INCREMENT=5;private class KeyHandler implements KeyListenerpublic void keyPressed(KeyEvent event)KEY keyCode=event.getKeyCode();int d;if (event isShiftDnwn ()d=LARGE_I
11、NCREMENT;elsed=SMALL_INCREMENT;if(keyCode=KeyEvent.VK_LEFT)add(-d,0);else if(keyCode=KeyEvent.VK_RIGHT)add(d,0);else if(keyCode=KeyEvent.VK_UP)add(0,-d);else if(keyCode=KeyEvent.VK_DOWN)add(0,d);public void keyReleased(KeyEvent event)public void keyTyped(KeyEvent event)char keyChar=event.getKeyChar(
12、);int d;if(Character.isUpperCase(keyChar)d=LARGE_INCREMENT;keyChar=Character.toLowerCase(keyChar);elsed=SMALL_INCREMENT;(分数:30.00)_二级 JAVA 机试-25 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题将数组中 arr=5,6,3,7,9,1 的各个元素按下标的逆序输出。public class java1(public static void main(Stringargs)int arr=5,6,3
13、,7,9,1);_;n=_;while(n=0)System.out.print(arrn+“);_;(分数:30.00)_正确答案:(第 1 处:int n第 2 处:arr. length-1第 3 处:n-或 n=n-1 或 n- -1)解析:解析 第 1 处使用前定义变量 n;第 2 处和第 3 处遍历数组各元素。二、简单应用题(总题数:1,分数:40.00)2.本题中,用表格表现某个月的月历,其中标题是从 Sunday 到 Saturday,表格中的各项是可以修改的。import java.awt.*;import java.awt.event.*;import javax.swin
14、g.*;import javax.swing.table.*;public class java2public static void main(Stringargs)tryUIManager.setLookAndFeeI(UIManager.getSystemLookAndFeelClassName();catch(Exception e)JFrame frame=new CalendarTableFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();class CalendarTableFrame
15、 extends JFrameprivate static final int WIDTH=500;private static final int HEIGHT=150;private_cells=null,null,null,new Integer(1),new Integer(2),new Integer(3),new Integer(4),new Integer(5),new Integer(6),new Integer(7),new Integer(8),new Integer(9),new Integer(10),new Integer(11),new Integer(12),ne
16、w Integer(13),new Integer(14),new Integer(15),new Integer(16),new Integer(17),newInteger(18),new Integer(19),new Integer(20),new Integer(21),new Integer(22),new Integer(23),new Integer(24),newInteger(25),new Integer(26),new Integer(27),new Integer(28),new Integer(29),new Integer(30),new Integer(31),
17、null;private StringcolumnNames=“Sunday“,“Monday“,“Tuesday“,“Wednesday“,“Thursday“,“Friday“,“Saturday“;public CalendarTableFrame()setTitle(“java2“);setSize(WIDTH,HEIGHT);JTable table=new_;getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);(分数:40.00)_正确答案:(第 1 处:Object第 2 处:JTable(cells,
18、columnNames)解析:解析 第 1 处定义二维数组保存日期数据;第 2 处 JTable 的构造方法第一个参数是数据,第二个参数是表格第一行中显示的内容。三、综合应用题(总题数:1,分数:30.00)3.本题的功能是用键盘上的方向键来控制直线的绘制方向。如果一直按向上的方向键,则在窗口中从焦点开始向上缓慢绘制直线,按其他方向键也会向对应的方向缓慢地绘制直线,如果按下Shift键的话,绘制直线的速度会加快。import java.awt.*;import java.awt.geom.*;import java.util.*;import java.awt.event.*;import j
19、avax.swing.*;public class java3public static void main(Stringargs)SketchFrame frame=new SketchFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();class SketchFrame extends JFramepublic SketchFrame()setTitle(“java3“);setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);SketchPanel panel=new Sk
20、etchPanel();Container contentPane=getContentPane();contentPane.add(panel);public static final int DEFAULT_WIDTH=300;public static final int DEFAULT_HEIGHT=200;class SketchPanel extends JPanelpublic void sketchPanel()last=new Point2D.Double(100,100);lines=new ArrayList();KeyHandler listener=new KeyHa
21、ndler();addkeyListener(this);setFocusable(true);public void add(int dx,int dy)Point2D end=new Point2D.Double(last.getX()+dx,last.getY()+dy);Line2D line=new Line2D.Double(last,end);lines.add(line);repaint();last=end;public void paintComponent(Graphics g)super.paintComponent(g);Graphics2D g2=(Graphics
22、2D)g;for(int i=0;ilines.size();i+)g2.draw(Line2D)lines.get(i);private Point2D last;private ArrayList lines;private static final int SMALL_INCREMENT=1;private static final int LARGE_INCREMENT=5;private class KeyHandler implements KeyListenerpublic void keyPressed(KeyEvent event)KEY keyCode=event.getK
23、eyCode();int d;if (event isShiftDnwn ()d=LARGE_INCREMENT;elsed=SMALL_INCREMENT;if(keyCode=KeyEvent.VK_LEFT)add(-d,0);else if(keyCode=KeyEvent.VK_RIGHT)add(d,0);else if(keyCode=KeyEvent.VK_UP)add(0,-d);else if(keyCode=KeyEvent.VK_DOWN)add(0,d);public void keyReleased(KeyEvent event)public void keyTyp
24、ed(KeyEvent event)char keyChar=event.getKeyChar();int d;if(Character.isUpperCase(keyChar)d=LARGE_INCREMENT;keyChar=Character.toLowerCase(keyChar);elsed=SMALL_INCREMENT;(分数:30.00)_正确答案:(第 1 处:pulic SketchPanel()第 2 处:addKeyListener(listener)第 3 处:int keyCode=event.getKeyCode()解析:解析 第 1 处 SketchPanel 是构造方法,构造方法是给对象赋初值,所以没有返回值,但不用void 来声明;第 2 处注册时间的监听器,参数应为事件源;第 3 处 getKeyCode()方法获得的是 int 型的键码。