基本操作
在考生文件夹中存有文件名为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);
}
}