四、程序填空題(本大題共5小題,每空2分,共20分)
27.方法void moveOddFront (int a[])的功能是將數(shù)組a中的所有奇數(shù)都移到數(shù)組的前端, 而把偶數(shù)放于所有奇數(shù)的后面,其方法是當發(fā)現(xiàn)是偶數(shù)時,就讓該數(shù)留在原來位置, 當發(fā)現(xiàn)是奇數(shù)時,就與前面的第一個偶數(shù)交換。程序引入變量odd表示移動過程中 遇到的奇數(shù)個數(shù)。
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.以下程序的界面包含一個文本區(qū)text和一個允許多選的列表list,列表的條目存于字 符串數(shù)組sports[]中,當列表發(fā)生選擇事件時,事件處理程序將這次選中的所有條目 在文本區(qū)中輸出。這里給出的是其中處理列表事件的方法。
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[______]+":被選中\(zhòng)n");
}
}
29.以下應用程序創(chuàng)建一個窗口,窗口內(nèi)放置一個面板,在面板中顯示一張圖片和一段 文字。
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用于管理多個線程共享數(shù)據(jù)data,其中定義了一個供線程修改 data的方法modiData()。為了對data的修改操作保持完整,多線程在data上的操作 有互斥要求;另外,限制線程對data的修改不能讓data為負數(shù),所以多線程在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;
}
______;
}
}