一、基本操作题
本题利用递归方法求前n个自然数的和(n=lO)。
publicclassjaval{
publicstaticvoidmain(String[]args){
intsum=add(10):
System.out.println("1+2+…+9+10="+
sum);
}
publicstaticintadd(){
if(n==l){
;
}
else
;
}
}
点击进入>>全国计算机等级考试真题题库全套最新考试资料
二、简单应用题
本题中定义了一个简单的计算器,可以进行基本的四则运算。程序中包含16个按钮用来表示0~9、+、-、*、/、一运算符和小数点,程序顶部的文本框用来显示操作数以及结果。
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassjava2{
publicstaticvoidmain(String[]args){
try{
UIManager.setLookAndFeel(UIManager.getSys-
temLookAndFeelClassName());
}
catch(Exceptione){}
JFrameframe=newCalculatorFrame();
frame.show();
}
}
classCalculatorPanelextendsJPanelimplementsAc-
tionListener{
privateJTextFielddisplay;
privateJButtonbtn;
privatedoublearg=0;
privateStringop="=";
privatebooleanstart=true;
publicCalculatorPanel(){
setLayout(newBorderLayout());
display=newJTextField("0");
display.setEditable(false);
add(display,"North");
JPanelP=newJPanel();
P.setLayout(newGridLayout(4,4));
Stringbuttons="789/456*123-0.=+":
for(inti=0;i btn=newJButton(buttons.substring(i,i+
1));
P.add(btn);
;
}
add(P,"Center");
}
publicvoidactionPerformed(ActionEventevt){
Strings=evt.getActionCommand();
if(’0’<=s.charAt(0)&&s.charAt(O)<=’
9’‖s.equals("-")){
if(start)display.setText(s):
elsedisplay.setText(display.getText()+s);
start=false;
}
else{
if(start){
if(s.equals("-")){
display.setText(s):
start=false;
}
elseop=S;
}
else(
doublex=;
calculate(x);
op=S:
start=true;
}
}
}
publicvoidcalculate(doublen){
if(op.equals("+"))arg+=n:
elseif(op.equals("-"))arg-=n;
elseif(op.equals("*"))arg*=n;
elseif(op.equals("/"))arg/=n;
elseif(op.equals("="))arg=n;
display.setText(""+arg);
}
}
classCalculatorFrameextendsJFrame{
publicCalculatorFrame(){
setTitle("java2");
setSize(220,180);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
ContainercontentPane=getContentPane();
contentPane.add(newCalculatorPanel());
}
}
三、综合应用题
本题的功能是用文本框来设定表盘中指针的位置。窗口中有一个画板和两个文本框,画板中绘制了一个表盘和时针、分针,通过文本框分别设定“时”和“分”,表盘中的时针和分针就会指到对应的位置上。
importjava.awt.*;
importjava.awt.event*;
importjava.awt.geom.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclassjava3
{
publicstaticvoidmain(String[]args)
{
TextTestFrameframe=newTextTestFrame():
frame.setDefauhCloseOperation(JFrame.EXIT_
0N_CLOSE);
frame.show();
}
}
classTextTestFrameextendsJFrame
{
publicTextTestFrame()
{
setTitle("java3"):
setSize(DEFAULT_WIDTH,DEFAULT_
HElGHT);
ContainercontentPane=getContentPane();
DocumentListenerlistener=newDoeumentListen-
er();
JPanelpanel=newJPanel();
hourField=newJTextField("12",3);
panel.add(hourField);
hourField.getDocument().addDocumentListener
(this);
minuteField=newJTextField("00",3):
panel.add(minuteField);
minuteField.getDocument().addDocumentListener
(listener);
contentPane.add(panel,BorderLayout.S()UTH);
clock=newClockPanel();
contentPane.add(clock,BorderLayout.CEN-
TER);
}
publicvoidsetClock()
{
try
{
inthours
=Integer.parseInt(hourField.getText().trim
()):
intminutes
=Integer.parseInt(minuteField.getText().trim
());
clock.setTime(hours,minutes);
}
catch(NumberFormatExcepfione){}
}
publicstaticfinalintDEFAULT_WIDTH=300;
publicstaticfinalintDEFAULT_HEIGHT
=300;
privateJTextFieldhourField;
privateJTextFieldminuteField;
privateClockPanelclock;
privateclassclockFieldListenerextendsDocu-
mentListener
{
publicvoidinsertUpdate(DocumentEvente){set-
Clock();}
publicvoidremoveUpdate(DocumentEvente){
setClock();}
publicvoidchangedUpdate(DocumentEvente){}
}
}
classClockPanelextendsJPanel
{
pubhcvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
Graphies2Dg2=(Graphics2D)g;
Ellipse2Dcircle
=newEllipse2D.Double(0,0,2*RADIUS,2
*RADIUS);
g2.draw(circle);
doublehourAngle
=Math.toRadians(90-360*minutes/(12
*60));
drawHand(92,hourAngle,HOUR_HAND_
LENGTH);
doubleminuteAngle
=Math.toRadians(90-360*minutes/60);
drawHand(g2,minuteAngle,MINUTE_HAND_
LENGTH):
}
punicvoiddrawHand(Graphics2Dg2,
doubleangle,doublehandLength)
{
Point2Dend=newPoint2D.Double(
RADIUS+handLength*Math.cos(angle),
RADIUS-handLength*Math.sin(angle));
Point2Dcenter=newPoint2D.Double(RADIUS,
RADIUS):
g2.draw(newLine2D.Double(center,end));
}
publicvoidsetTime(inth,intm)
{
minutes=h*60+m;
repaint();
}
privatedoubleminutes=0;
privatedoubleRADIUS=100;
privatedoubleMINUTE_HAND_LENGTH=
0.8*RADIUS;
privatedoubleHOUR_HAND_LENGTH=0.6
*RADIUS:
}
考试试题答案与解析
一、基本操作题
第1处:intn
第2处:returnl
第3处:returnn+add(n-1)
【解析】递归方法是一种调用程序本身并采用栈结构的算法,第1处定义参数类型;第2处是递归初值;第3处为递归运算。
二、简单应用题
第1处:btn.addActionListener(this)
第2处:Double.parseDouble(display.getText())
【解析】第1处为按钮添加监听器;第2处获得输入数字并转化为double型。
三、综合应用题
第1处:DocumentListenerlistener=newClockField-Listener()
第2处:hourField.getDocument().addDocumentLis-tener(listener)
第3处:privateclassClockFieldListenerimplementsDocu-mentListener
【解析】第1处从后面程序可以看出ClockFieldListener类扩展了DocumentListener,此处应使用继承后的子类;第2处注册窗体的监听器,参数应为事件源。第3处实现的是接口,应使用implements。