基本操作
在考生檔案夾中存有檔案名為Java_1.java的檔案,該程式是不完整的,請在注釋行“//Found”下一行語句的下劃線地方填入正确内容,然後删除下劃線,請勿删除注釋行或改動其他已有語句内容。存盤時檔案必須存放在考生檔案夾下,不得改變原有檔案的檔案名。
程式的功能是:提示使用者輸入大于0的整數n,利用近似公式計算自然數e的近似值:e=1+(1/1!)+(1/2!)+…+(1/n!),并列印出該近似值
例如輸入10時,輸出結果為e的近似值為:
2.7182818011463845
import java.lang.*;
import java.util.*;
public class Java_1 {
public static void main(String[] args){
int n;
double e = 1.0;
System.out.print("請輸入n: ");
//***************************Found*********************
Scanner scan = new Scanner (__________);
String nstr = scan.next();
//***************************Found*********************
n = Integer.______(nstr);
double t = 1.0;
for(int i=1;i<=n;i++){
//***************************Found*********************
t = _________;
e = e + t;
}
System.out.print("e 的近似值為: "+e);
}
}
本題着重考查考生對Java語言基本資料類型的掌握情況。
本題中的第一個空格:根據題幹擷取使用者輸入的值,建立 Scanner 對象的基本文法為Scanner s = new Scanner(System.in),是以此處填入System.in;
本題中的第二個空格:scanner擷取的資料類型為string,将其強制轉換為int,是以此處填入parseInt;
本題中的第三個空格:結合題幹,1除以n,n自增,是以此處填入
t/i
;(牛呀,我真沒想到還可以這樣操作(๑•̀ㅂ•́)و✧)
本評析僅作參考。
import java.lang.*;
import java.util.*;
public class Java_1 {
public static void main(String[] args){
int n;
double e = 1.0;
System.out.print("請輸入n: ");
//***************************Found*********************
Scanner scan = new Scanner (System.in);
String nstr = scan.next();
//***************************Found*********************
n = Integer.parseInt(nstr);
double t = 1.0;
for(int i=1;i<=n;i++){
//***************************Found*********************
t = t/i;
e = e + t;
}
System.out.print("e 的近似值為: "+e);
}
}
簡單應用
在考生檔案夾中存有檔案名為Java_2.java的檔案,該程式是不完整的,請在注釋行“//Found”下一行語句的下劃線地方填入正确内容,然後删除下劃線,請勿删除注釋行或改動其他已有語句内容。存盤時檔案必須存放在考生檔案夾下,不得改變原有檔案的檔案名。
程式的功能是:将一個字元串數組中指定序号後的元素全部輸出,如果指定的序号小于0,則序号被賦予0;如果指定的序号大于數組元素的最大序号,則序号被賦予最大的序号。程式的運作結果如下:
one two three four five
//***************************Found*********************
class PrintStrings implements ________{
int ind = 0 ;
//***************************Found*********************
______ strings = { "one", "two", "three", "four", "five"};
public PrintStrings( int n) {
if( n < 0)
n = 0;
else if ( n >= strings.length)
//***************************Found*********************
n = ___________ ;
ind = n;
}
//***************************Found*********************
public void ____( ){
while(ind < strings.length){
System.out.print(strings[ind] + " ");
//***************************Found*********************
_____________;
}
System.out.println();
}
}
public class Java_2{
public static void main(String[] args){
PrintStrings p = new PrintStrings(-1);
//***************************Found*********************
_________;
t.start( );
}
}
本題着重考查考生對Java語言線程的掌握情況。
本題中的第一個空格:根據Java_2類可以看出此處用線程的方式來實作,一般情況下我們使用實作Runnable接口來實作線程,此處填入Runnable;
本題中的第二個空格:strings是一個字元串型的數組,對strings的類型定義應該為String[],此處填入String[];
本題中的第三個空格:結合題幹,如果指定的序号大于數組元素的最大序号,則序号被賦予最大的序号,此處填入strings.length-1;
本題中的第四個空格:線程要實作run方法,是以此處填入run;
本題中的第五個空格:結合題幹,需要列印strings數組,是以要對ind進行自增,此處填入ind++;
本題中的第六個空格:t作為新開的線程,需要定義,p作為已經建立的對象可以作為參數傳遞,此處填入Thread t = new Thread( p );
本評析僅作參考。
//***************************Found*********************
class PrintStrings implements Runnable{
int ind = 0 ;
//***************************Found*********************
String[] strings = { "one", "two", "three", "four", "five"};
public PrintStrings( int n) {
if( n < 0)
n = 0;
else if ( n >= strings.length)
//***************************Found*********************
n = strings.length - 1 ;
ind = n;
}
//***************************Found*********************
public void run( ){
while(ind < strings.length){
System.out.print(strings[ind] + " ");
//***************************Found*********************
ind++;
}
System.out.println();
}
}
public class Java_2{
public static void main(String[] args){
PrintStrings p = new PrintStrings(-1);
//***************************Found*********************
Thread t = new Thread(p);
t.start( );
}
}
綜合應用
在考生檔案夾中存有檔案名為Java_3.java的檔案,該程式是不完整的,請在注釋行“//Found”下一行語句的下劃線地方填入正确内容,然後删除下劃線,請勿删除注釋行或改動其他已有語句内容。 存盤時檔案必須存放在考生檔案夾下,不得改變原有檔案的檔案名。
程式釆用Swing元件完成了四葉玫瑰線圖形的繪制。三個單選按鈕實作了按標明的顔色繪制四葉玫瑰線。
四葉玫瑰線的極坐标方程為:
程式的運作結果如下圖所示:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//**************found*****************
public class Java_3 extends Frame ____________ ItemListener{
Color color = Color.blue;
CheckboxGroup cg;
Checkbox cb1,cb2,cb3;
public Java_3(){
cg = new CheckboxGroup();
setSize(300,300);
cb1 = new Checkbox("blue",cg,true);
cb2 = new Checkbox("red",cg,true);
cb3 = new Checkbox("green",cg,true);
cg.setSelectedCheckbox(cb1);
add(cb1); add(cb2); add(cb3);
cb1.addItemListener(this);
cb2.addItemListener(this);
//**************found*****************
____________.addItemListener(this);
}
public void itemStateChanged(ItemEvent e){
if(e.getSource()==cb1)
color=Color.blue;
if(e.getSource()==cb2)
color=Color.red;
if(e.getSource()==cb3)
color=Color.green;
repaint();
}
class MyEvent1 extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class MyEvent2 extends ComponentAdapter {
public void componentResized(ComponentEvent e){
repaint();
}
}
//**************found*****************
public void ____________(Graphics g) {
int w = getWidth(),h=getHeight();
int x0 = w/2,y0 = h/2;
g.setColor(color);
g.drawLine(x0,0,x0,h);
g.drawLine(0,y0,w,y0);
double pi = 3.1415926,angle,rou;
int r,i,x,y;
for(r=10;r<200;r+=20){
for(i=0;i<1023;i++){
angle = i * pi/512;
rou = r * Math.sin(2*angle);
x = (int)Math.round(rou*Math.cos(angle));
y = (int)Math.round(rou*Math.sin(angle));
g.drawOval(x0+x,y0+y,1,1);
}
}
}
public static void main(String[] args){
Java_3 f = new Java_3();
MyEvent1 me1 = f.new MyEvent1();
MyEvent2 me2 = f.new MyEvent2();
//**************found*****************
f.____________("四葉玫瑰線");
f.setLayout(new FlowLayout());
f.addWindowListener(me1);
f.addComponentListener(me2);
//**************found*****************
f.____________(true);
}
}
本題着重考查考生對Java語言Swing元件中Frame的掌握情況。
本題中的第一個空格:ItemListener是一個标準接口,要使用implements關鍵字實作接口,此處填入implements;
本題中的第二個空格:cb1和cb2都是Checkbox類型,都添加了addItemListener監聽,cb3也是checkboxgroup的一部分,也要添加addItemListener監聽,此處填入cb3;
本題中的第三個空格:繪制的基本邏輯都應該寫在paint函數中,當有改變時會通過repaint函數隐式調用paint重繪,此處填入paint;
本題中的第四個空格:四葉玫瑰線是frame标題,使用setTitle方法設定标題,此處填入setTitle;
本題中的第五個空格:frame定義完成後需要顯示,使用setVisible方法,此處填入setVisible;
本評析僅作參考。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//**************found*****************
public class Java_3 extends Frame implements ItemListener{
Color color = Color.blue;
CheckboxGroup cg;
Checkbox cb1,cb2,cb3;
public Java_3(){
cg = new CheckboxGroup();
setSize(300,300);
cb1 = new Checkbox("blue",cg,true);
cb2 = new Checkbox("red",cg,true);
cb3 = new Checkbox("green",cg,true);
cg.setSelectedCheckbox(cb1);
add(cb1); add(cb2); add(cb3);
cb1.addItemListener(this);
cb2.addItemListener(this);
//**************found*****************
cb3.addItemListener(this);
}
public void itemStateChanged(ItemEvent e){
if(e.getSource()==cb1)
color=Color.blue;
if(e.getSource()==cb2)
color=Color.red;
if(e.getSource()==cb3)
color=Color.green;
repaint();
}
class MyEvent1 extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class MyEvent2 extends ComponentAdapter {
public void componentResized(ComponentEvent e){
repaint();
}
}
//**************found*****************
public void paint(Graphics g) {
int w = getWidth(),h=getHeight();
int x0 = w/2,y0 = h/2;
g.setColor(color);
g.drawLine(x0,0,x0,h);
g.drawLine(0,y0,w,y0);
double pi = 3.1415926,angle,rou;
int r,i,x,y;
for(r=10;r<200;r+=20){
for(i=0;i<1023;i++){
angle = i * pi/512;
rou = r * Math.sin(2*angle);
x = (int)Math.round(rou*Math.cos(angle));
y = (int)Math.round(rou*Math.sin(angle));
g.drawOval(x0+x,y0+y,1,1);
}
}
}
public static void main(String[] args){
Java_3 f = new Java_3();
MyEvent1 me1 = f.new MyEvent1();
MyEvent2 me2 = f.new MyEvent2();
//**************found*****************
f.setTitle("四葉玫瑰線");
f.setLayout(new FlowLayout());
f.addWindowListener(me1);
f.addComponentListener(me2);
//**************found*****************
f.setVisible(true);
}
}