天天看點

Java二級操作題第2套

基本操作

在考生檔案夾中存有檔案名為Java_1.java和Java_1.html的檔案,Java_1.java是不完整的,請在注釋行“//Found”下一行語句的下劃線地方填入正确内容,然後删除下劃線,請勿删除注釋行或改動其他已有語句内容。存盤時檔案必須存放在考生檔案夾下,不得改變原有檔案的檔案名。

本題的要求是:

完善Java_1.java檔案,并進行調試(在指令行中使用appletviewer Java_1.html,或者使用內建開發環境)。

程式輸出如下:

Java二級操作題第2套
//*********Found********
import java.__________________.*;
import java.awt.Graphics;

//*********Found********
public class Java_1 extends __________________ {  
   public void paint( Graphics g )
   {
//*********Found********
      g.__________________( "歡迎你來參加Java 語言考試!", 25, 25 );
   }
}      

本題考查的是Applet的使用。

涉及到對繼承知識點的考查。

在Java中,我們可以聲明一個類擴充(extends)另一個類,即繼承。繼承使得一個類能夠使用另一個類的屬性和方法,就象使用自己的屬性和方法一樣。例如本題要求填寫的是繼承Applet類,這是因為類Java_1需要使用Applet類的方法paint。

Applet程式如下:

//*********Found********
import java.applet.*;
import java.awt.Graphics;

//*********Found********
public class Java_1 extends Applet{  
   public void paint( Graphics g )
   {
//*********Found********
      g.drawString( "歡迎你來參加Java 語言考試!", 25, 25 );
   }
}      

簡單應用

在考生檔案夾中存有檔案名為Java_2.java和Java_2.html檔案,Java_2.java是不完整的是不完整的,請在注釋行"//Found"下一行語句的下劃線地方填入正确内容,然後删除下劃線,請勿删除注釋行或改動其他已有語句内容。

存盤時檔案必須存放在考生檔案夾下,不得改變原有檔案的檔案名。

本題的要求是:在Applet中顯示0至10的階乘。請完善Java_2.java檔案,并進行調試(在指令行中使用appletviewer Java_2.html,或者使用內建開發環境)。使運作結果為:

Java二級操作題第2套
import java.awt.*;
import java.applet.*;

//*********Found********
public class Java_2 extends _______________________
{
    TextArea outputArea;

    public void init()
    {
        setLayout(new BorderLayout());
        outputArea = new TextArea();
     //*********Found********
        ____________________( outputArea );

      // 計算0至10的階乘
        for ( long i = 0; i <= 10; i++ )
            //*********Found********
            outputArea.append(i + "! = " + ______________ + "\n" );
    }
   
   // 用遞歸定義階乘方法
    public long factorial( long number )
    {                  
        if ( number <= 1 )  // 基本情況
            return 1;
        else
            //*********Found********
            return number * factorial( ___________ - 1 );
    }  
}      

本題考查的是Applet的編寫。

本題中的Applet程式必須是繼承了java.applet.Applet的類。

具體的程式如下:

import java.awt.*;
import java.applet.*;

//*********Found********
public class Java_2 extends Applet
{
    TextArea outputArea;

    public void init()
    {
        setLayout(new BorderLayout());
        outputArea = new TextArea();
     //*********Found********
        add( outputArea );

      // 計算0至10的階乘
        for ( long i = 0; i <= 10; i++ )
            //*********Found********
            outputArea.append(i + "! = " +factorial(i)+ "\n" );
    }
   
   // 用遞歸定義階乘方法
    public long factorial( long number )
    {                  
        if ( number <= 1 )  // 基本情況
            return 1;
        else
            //*********Found********
            return number * factorial(number- 1 );
    }  
}      

綜合應用

在考生檔案夾中豐有檔案名為Java_3.java的檔案。

該程式運作後的結果如下圖所示:

Java二級操作題第2套

該程式是不完整的,請在注釋行“//Found”下一行語句的下劃線地方填入正确内容,然後删除下劃線,請勿删除注釋行或改動其他已有語句内容。存盤時檔案必須存放在考生檔案夾下,不得改變原有檔案的檔案名。

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

public class Java_3
{
   public static void main(String[] args)
   {
      FontFrame frame = new FontFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

     //*********Found********
class FontFrame _________ JFrame
{
   public FontFrame()
   {
      setTitle("沁園春.雪");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
      FontPanel panel = new FontPanel();
      Container contentPane = getContentPane();
     //*********Found********
      contentPane.add(___________________);
   }
   public static final int DEFAULT_WIDTH = 300;
   public static final int DEFAULT_HEIGHT = 200;
}

     //*********Found********
class FontPanel extends ________
{
   public void paintComponent(Graphics g)
   {
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
      String message = "數風流人物,還看今朝!";
      Font f = new Font("隸書", Font.BOLD, 24);
      g2.setFont(f);
      FontRenderContext context = g2.getFontRenderContext();
      Rectangle2D bounds = f.getStringBounds(message, context);
      double x = (getWidth() - bounds.getWidth()) / 2;
      double y = (getHeight() - bounds.getHeight()) / 2;
      double ascent = -bounds.getY();
      double baseY = y + ascent;
      g2.setPaint(Color.RED);
     //*********Found********
      g2._________________(message, (int)x, (int)(baseY));
   }
}      

本題考查的是Swing構件和AWT中的事件處理。

1)類FontFrame的構造方法中有代碼:“setTitle(“沁園春.雪”);“用于設定應用程式窗體的标題"沁園春.雪”,故FontFrame應該是JFrame的子類。是以第一空"class FontFrame ______ JFrame"應填"extends”。

2)類FontFrame的構造方法中有代碼"FontPanel panel = new FontPanel();",是以第二空"contentPane.add()“應填"panel”。

3)類FontPanel的方法paintComponent(Graphics g)中的語句super.paintComponent(g);說明FontPanel覆寫了其父類的相應方法,而方法paintComponent(Graphics g)是抽象類javax.swing.JComponent中定義的,故FontPanel應是JComponent的子類。是以第三空"class FontPanel extends _____“應填"JPanel”。

4)FontPanel的paintComponent方法中的message存儲了程式中要顯示的字元串,且Graphics的drawString方法用來"輸出"字元串,故第四空"g2.(message,

(int)x, (int)(baseY));“應填"drawString”。

具體程式如下:

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

public class Java_3
{
   public static void main(String[] args)
   {
      FontFrame frame = new FontFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

     //*********Found********
class FontFrame extends JFrame
{
   public FontFrame()
   {
      setTitle("沁園春.雪");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
      FontPanel panel = new FontPanel();
      Container contentPane = getContentPane();
     //*********Found********
      contentPane.add(panel);
   }
   public static final int DEFAULT_WIDTH = 300;
   public static final int DEFAULT_HEIGHT = 200;
}

     //*********Found********
class FontPanel extends JPanel
{
   public void paintComponent(Graphics g)
   {
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
      String message = "數風流人物,還看今朝!";
      Font f = new Font("隸書", Font.BOLD, 24);
      g2.setFont(f);
      FontRenderContext context = g2.getFontRenderContext();
      Rectangle2D bounds = f.getStringBounds(message, context);
      double x = (getWidth() - bounds.getWidth()) / 2;
      double y = (getHeight() - bounds.getHeight()) / 2;
      double ascent = -bounds.getY();
      double baseY = y + ascent;
      g2.setPaint(Color.RED);
     //*********Found********
      g2.drawString(message, (int)x, (int)(baseY));
   }
}