1.基本操作题1. 下面的程序的功能是求1~100的奇数的和及该和的平均值。请在程序的每条横线处填写一个语句,程序的功能完整。
注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。
public class SumAndAve{
public static void main(String args[ ]){
int count=0,sum=0,ave=0;
for(int i=1;i<=100;____________________)
if(_____________________)
continue;
else
{
___________________
sum=sum+i;
}
ave=sum/count;
System.out.println("sum="+sum);
System.out.println("ave="+ave);
}
}
i+=2
i%2==0
++count;
[解析]
本题主要考查for循环语句的用法。解答本题的关键是熟练使用for循环语句。在本题中,for(int i=1;i<=100;i+=2;)语句是用来控制被求的奇数,i+=2;语句是使循环变量递增2,即所求的奇数,在程序中用到的count计数器是记录所求奇数的个数。
2.简单应用题1. 请完成下列Java程序:读取自己的源文件并把它压缩成GZIP文件。
注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。
import java.io.*;
import java.util.zip.*;
public class exl6 2 {
public static void main{String[] arg) {
ex16_2 obj16_2 = new ex16_2();
obj16_2.doZip("ex16_2.java","ex16_2.gzip")
}
public void doZip(String strIn,String strOut
FileInputStream in;
FileOutputStream out;
GZIPOutputStream gzip;
int nFileLength;
byte[] barray = new byte[10];
try {
in = new FileInputStream(strIn);
out = new FileOutputStream(strOut);
gzip = new GZIPOutputStream(out);
while((nFileLength = in.read(barray, 0 barray.length)) > 0)
_____________________;
______________________;
gzip.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
gzip.write(barray,0,nFileLength)
in.close()
[解析]
本题主要考查文件的读写操作。解题关键是熟悉文件读写操作,熟悉GZIP的编程模式,使用FileInputStream读取待压缩的文件,使用GZIPOutputStream进行压缩,除了压缩之外还有解压缩,但是编程的模式一样,一旦压缩数据流被打开,可以象其他数据流一样进行读写。本题中,第1个空,熟练掌握压缩数据流的写操作;第2今空,关闭输出文件刷新输出缓冲器很重要,因为程序没有执行正常刷新数据的垃圾回收,所以就会暂停程序的执行。
3.综合应用题1. 下面是一个Applet程序,其功能是绘制三维矩形以使该矩形面凹下,并将图像放入凹下的矩形面中。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
程序运行结果如下:

import java.awt.*;
import java.applet.*;
import java.awt.image.*;
import java.util.*;
import java.net.*;
/*
<applet code="ex16_3.class" width=800 height=400 >
</applet>
*/
public class ex16_3 extends Applet {
private Image img;
public void init() {
URL url = getCodeBase();
img = getImage(url,"ex16_3.gif");
MediaTracker mt = new MediaTracker();
mt.addImage(img,1);
try {
mt.waitForAll();
} catch(Exception e) {
e.printStackTrace();
}
setBackground(Color.black);
}
public void paint(Graphics g) {
int thick = 3, x = 10, y = 10;
g.drawImage(img,x,y); g.setColor(Color.lightGray);
int w = img.getWidth(this);
int h = img.getHeight(this);
for(int i=0; i<thick; i++)
g.draw3DRect(x, y,w+(2*i),h+(2*i),true); }
}
ex16_3.html <HTML>
<HEAD>
<TITLE>ex16_3</TITLE>
</HEAD>
<BODY>
<applet code="ex16_3.class" width=800 height=400 >
</applet>
</BODY>
</HTML>
new MediaTracker(this)
g.drawImage(img,x,y,this)
g.draw3DRect(--x,--y,w+(2*i),h+(2*i),false)
[解析]
本题主要考查Applet图形绘制和图像显示。解题关键是掌握绘制三维矩形的基本方法,掌握MediaTracker的基本用法,熟悉图形界面的坐标分布级已通过简单的方法来获得坐标。本题中,第一处,MediaTracker类的对象初始化需要将this指针作为参数传递给该类的构造方法;第二处,Graphics类的对象g调用drawImage()方法显示从磁盘文件中读取的Image对象,第四个参数需要将this作为参数传给该方法;第三处,g调用draw3DRect()方法绘制三维矩形,最后一个参数为false表示矩形是凹下的,相反为凸起,第一和第二个参数作递减是为了让显示效果看起来是矩形的左上方和图像的左上方有一定的距离,让人感觉矩形将图像包含在内。