四、程序填空题(本大题共5小题,每空2分,共20分)
27.方法void moveOddFront (int a[])的功能是将数组a中的所有奇数都移到数组的前端, 而把偶数放于所有奇数的后面,其方法是当发现是偶数时,就让该数留在原来位置, 当发现是奇数时,就与前面的第一个偶数交换。程序引入变量odd表示移动过程中 遇到的奇数个数。
void moveOddFront(int a[]){
for(int i=0, odd=0; ______;i++)
if( a[i] %2 == 1){
int t = a[odd]; a[odd]=a[i]; a[i]=t;______;
}
}
28.以下程序的界面包含一个文本区text和一个允许多选的列表list,列表的条目存于字 符串数组sports[]中,当列表发生选择事件时,事件处理程序将这次选中的所有条目 在文本区中输出。这里给出的是其中处理列表事件的方法。
public void valueChanged(________e){
if (e.getSource()==list){
text.setText(null);
int tempList[]=list. getSelectedIndices();∥获得选中索引表
for (int i=0;i < tempList.length; i++)∥对索引表中的每个元素显示被选中字样
text.append(sports[______]+":被选中\n");
}
}
29.以下应用程序创建一个窗口,窗口内放置一个面板,在面板中显示一张图片和一段 文字。
import javax.swing.*;import java.awt.*;
public class Test29 {
public static void main(String[] args) {
MyFrame frame = new MyFrame();
}
}
class MyFrame extends JFrame {
public MyFrame(){
setTitle("Test29"); setSize(300, 200);
Toolkit tool=______;
Image img = tool.getImage("myPic2.jpg");
getContentPane().add(new MyPanel (img));
setVisible(true);
}
}
class MyPanel extends JPanel{
Image myImg;
MyPanel(Image img){ myImg=img;}
public void paintComponent(Graphics g) {
if(myImg!=null)g.______ (myImg, 100,30,this);
g.drawString("我是一名自考生!",100, 140);
}
}
30.类ShareDataManager用于管理多个线程共享数据data,其中定义了一个供线程修改 data的方法modiData()。为了对data的修改操作保持完整,多线程在data上的操作 有互斥要求;另外,限制线程对data的修改不能让data为负数,所以多线程在data 上的操作还有同步要求。以下是类ShareDataManager的定义。
class ShareDataManager{
int data;
ShareDataManager(int init){data=init;}
synchronized void modiData(int delta){
if (data+delta>=0){ data+=delta;
} else {
while (data+delta<0){
try{______}
catch (InterruptedException e){}
}
data+=delta;
}
______;
}
}