1、二级 JAVA 机试-150 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题的功能是求 1100 的自然数的累加,并打印输出计算结果。public class java1(public static void main(Stringargs)int sum=0;int i=1;for(;)if(_)sum=sum+i;else_;_;System.out.println(“sum=“+sum);(分数:30.00)_二、简单应用题(总题数:1,分数:40.00)2.本题主窗口中包括一个文本框和一个文本域,在上面的文本框中输入一个整数
2、并按回车键,就会在下面的文本域中显示该整数的平方值;如果在文本框中输入的不是一个整数,将弹出一个警告窗口。import java.awt.event.*;import java.awt.*;import javax.swing.JOptionPane;class Dwindow extends Frame implements ActionListenerTextField inputNumber;TextArea show;Dwindow(String s)super(s);inputNumber=new TextField(22);inputNumber.addActionListener
3、(this);show=new TextAtea();add(inputNumber,BorderLayout.NORTH);add(show,BorderLayout.CENTER);setBounds(60,60,300,300);setVisible(true);validate();addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););public void aetionPerformed(ActionEvent e)boolean boo=false;
4、if(e.getSource()=inputNumber)String s=_;char a=s.toCharArray();for(int i=0;ia.length;i+)if(!(Character.isDigit(ai)boo=true;if(boo=true)JOptionPane.showMessageDialog(this,“您输入了非法字符“,“警告对话框“,_);inputNumber.setText(null);else if(boo=false)int number=Integer.parseInt(s);show.append(“/n“+number+“平方:“+(nu
5、mber*number);public class java2public static void main(String args)new Dwindow(“java2“);(分数:40.00)_三、综合应用题(总题数:1,分数:30.00)3.本题的功能是在文本域面板中添加一个带有行数的面板。窗口中有一个文本域,在文本域的左侧有一个带有数字的面板,该面板上的数字指示着文本域中的行数。import javax.swing.*;import javax.swing.event.*;import java.awt.*;public class java3 extends JFramepublic
6、 static JTextPane textPane;public static JScrollPane scrollPane;JPanel panel;public java3()super(“java3()“);panel=new JPanel();panel.setLayout(new BorderLayout();panel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20);textPane=new JTextPane();textPane.setFont(new Font(“monospaced“,Font.PLAIN,12
7、);scrollPane=new JScrollPane(textPane);panel.add(scrollPane);scrollPane.setPreferredsize(new Dimension(300,250);setContentPane(panel);setCloseOperation(JFrame.EXIT_ON_CLOSE);LineNumber lineNumber=new LineNumber();scrollPane.setRowHeaderView(lineNumber);public static void main(Stringargs)java3 ttp=ne
8、w java3();ttp.pack();ttp.setVisible(true);class LineNumber extends JTextPaneprivate final static Color DEFAULT_BACKGROUND=Color.gray;private final static Color DEFAULT_FOREGROUND=Color.black;private final static Font DEFAULT_FONT=new Font(“monospaced“,Font.PLAIN,12);private final static int HEIGHT=I
9、nteger.MAX_VALUE-1000000;private final static int MARGIN=5;private FontMetrics fontMetrics;private int lineHeight;private int currentRowWidth;private JComponent component;private int componentFontHeight;private int componentFontAscent;public LineNumber(JComponent component)if(component=null)setBackg
10、round(DEFAULT_BACKGROUND);setForeground(DEFAULT_FOREGROUND);setFont(DEFAULT_FONT);ponent=this;elsesetBackground(DEFAULT_BACKGROUND);setForeground(component.getForeground();setFont(component.getFont();ponent=component;componentFontHeight=component.getFontMetrics(component.getFont().getHeight();compon
11、entFontAscent=component.getFontMetrics(component.getFont().getAscent();setPreferredWidth(9999);public void setPreferredWidth(int row)int width=fontMetrics.stringWidth(String.valueOf(row);if(currentRowWidthwidth)currentRowWidth=width;setPreferredSize(new Dimension(2*MARGIN+width,HEIGHT);public void s
12、etFont(Font font)super.setFont(font);fontMetrics=getFontMetrics(getFont();public int getLineHeight()if(lineHeight=0)return componentFontHeight;elsereturn lineHeight;public void setLineHeight(int lineHeight)if(lineHeight0)this.lineHeight=lineHeight;public int getStartOffset()return component.getInset
13、s().top+componentFontAscent;public void paintComponent(Graphics g)int lineHeight=getLinerteight();int startOffset=getStartOffset();Rectangle drawHere=g.getClipBounds();g.setColor(getBackground();g.fillRect(drawHere.x,drawHere.y,drawHere.width.drawHere.height);g.setColor(getForeground();int startLine
14、Number=(drawHere.y/lineHeight)+1;int endLineNumber=startLineNumber+(drawHere.height/lineHeight);int start=(drawHere.y/lineHeight)*lineHeight+startOffset;for(int i=startLineNumber;i=endLineNumber;i+)String lineNumber=String.valueOf(i);int width=fontMetrics.stringWidth(lineNumber);g.drawstring(lineNum
15、ber,MARGIN+currentRowWidth-width,start);start+=lineHeight;setPreferredWidth(endLineNumber);(分数:30.00)_二级 JAVA 机试-150 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.本题的功能是求 1100 的自然数的累加,并打印输出计算结果。public class java1(public static void main(Stringargs)int sum=0;int i=1;for(;)if(_)sum=sum+i;else_;_;
16、System.out.println(“sum=“+sum);(分数:30.00)_正确答案:(第 1 处:i=100第 2 处:break第 3 处:i+或 i=i+1 或 i+=1)解析:解析 for(;)可以构成无限循环,所以第 1 处和第 2 处分别为跳出循环的条件和跳出循环;第3 处循环条件的自加操作。二、简单应用题(总题数:1,分数:40.00)2.本题主窗口中包括一个文本框和一个文本域,在上面的文本框中输入一个整数并按回车键,就会在下面的文本域中显示该整数的平方值;如果在文本框中输入的不是一个整数,将弹出一个警告窗口。import java.awt.event.*;import
17、java.awt.*;import javax.swing.JOptionPane;class Dwindow extends Frame implements ActionListenerTextField inputNumber;TextArea show;Dwindow(String s)super(s);inputNumber=new TextField(22);inputNumber.addActionListener(this);show=new TextAtea();add(inputNumber,BorderLayout.NORTH);add(show,BorderLayout
18、.CENTER);setBounds(60,60,300,300);setVisible(true);validate();addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););public void aetionPerformed(ActionEvent e)boolean boo=false;if(e.getSource()=inputNumber)String s=_;char a=s.toCharArray();for(int i=0;ia.length
19、;i+)if(!(Character.isDigit(ai)boo=true;if(boo=true)JOptionPane.showMessageDialog(this,“您输入了非法字符“,“警告对话框“,_);inputNumber.setText(null);else if(boo=false)int number=Integer.parseInt(s);show.append(“/n“+number+“平方:“+(number*number);public class java2public static void main(String args)new Dwindow(“java
20、2“);(分数:40.00)_正确答案:(第 1 处:inputNumber.getText()第 2 处:JOptionPane.WARNING_MESSAGE)解析:解析 第 1 处读取用户在文本框的输入内容;第 2 处设定对话框类型为警告对话框。三、综合应用题(总题数:1,分数:30.00)3.本题的功能是在文本域面板中添加一个带有行数的面板。窗口中有一个文本域,在文本域的左侧有一个带有数字的面板,该面板上的数字指示着文本域中的行数。import javax.swing.*;import javax.swing.event.*;import java.awt.*;public class
21、 java3 extends JFramepublic static JTextPane textPane;public static JScrollPane scrollPane;JPanel panel;public java3()super(“java3()“);panel=new JPanel();panel.setLayout(new BorderLayout();panel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20);textPane=new JTextPane();textPane.setFont(new Font
22、(“monospaced“,Font.PLAIN,12);scrollPane=new JScrollPane(textPane);panel.add(scrollPane);scrollPane.setPreferredsize(new Dimension(300,250);setContentPane(panel);setCloseOperation(JFrame.EXIT_ON_CLOSE);LineNumber lineNumber=new LineNumber();scrollPane.setRowHeaderView(lineNumber);public static void m
23、ain(Stringargs)java3 ttp=new java3();ttp.pack();ttp.setVisible(true);class LineNumber extends JTextPaneprivate final static Color DEFAULT_BACKGROUND=Color.gray;private final static Color DEFAULT_FOREGROUND=Color.black;private final static Font DEFAULT_FONT=new Font(“monospaced“,Font.PLAIN,12);privat
24、e final static int HEIGHT=Integer.MAX_VALUE-1000000;private final static int MARGIN=5;private FontMetrics fontMetrics;private int lineHeight;private int currentRowWidth;private JComponent component;private int componentFontHeight;private int componentFontAscent;public LineNumber(JComponent component
25、)if(component=null)setBackground(DEFAULT_BACKGROUND);setForeground(DEFAULT_FOREGROUND);setFont(DEFAULT_FONT);ponent=this;elsesetBackground(DEFAULT_BACKGROUND);setForeground(component.getForeground();setFont(component.getFont();ponent=component;componentFontHeight=component.getFontMetrics(component.g
26、etFont().getHeight();componentFontAscent=component.getFontMetrics(component.getFont().getAscent();setPreferredWidth(9999);public void setPreferredWidth(int row)int width=fontMetrics.stringWidth(String.valueOf(row);if(currentRowWidthwidth)currentRowWidth=width;setPreferredSize(new Dimension(2*MARGIN+
27、width,HEIGHT);public void setFont(Font font)super.setFont(font);fontMetrics=getFontMetrics(getFont();public int getLineHeight()if(lineHeight=0)return componentFontHeight;elsereturn lineHeight;public void setLineHeight(int lineHeight)if(lineHeight0)this.lineHeight=lineHeight;public int getStartOffset
28、()return component.getInsets().top+componentFontAscent;public void paintComponent(Graphics g)int lineHeight=getLinerteight();int startOffset=getStartOffset();Rectangle drawHere=g.getClipBounds();g.setColor(getBackground();g.fillRect(drawHere.x,drawHere.y,drawHere.width.drawHere.height);g.setColor(ge
29、tForeground();int startLineNumber=(drawHere.y/lineHeight)+1;int endLineNumber=startLineNumber+(drawHere.height/lineHeight);int start=(drawHere.y/lineHeight)*lineHeight+startOffset;for(int i=startLineNumber;i=endLineNumber;i+)String lineNumber=String.valueOf(i);int width=fontMetrics.stringWidth(lineN
30、umber);g.drawstring(lineNumber,MARGIN+currentRowWidth-width,start);start+=lineHeight;setPreferredWidth(endLineNumber);(分数:30.00)_正确答案:(第 1 处:scrollpane.setPreferredSize(new Dimension(300,250)第 2 处:setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)第 3 处:LineNumber LineNumber=new LineNumber(textPane)解析:解析 第 1 处 Java 是大小写敏感的;第 2 处设置窗口关闭方式应使用setDefaultCloseOperation()方法;第 3 处从下面的 public LineNumber(JComponent component)可以看出 LineNumber()需要 JComponent 型参数。