Java语言程序设计课后习题答案 下载本文

出一个二维数组的鞍点,即该位置上的元素在所在行上最大,在所在列上最小。(也可能没有鞍点) ength; j++)

{ Array[i][j] = ();

if(j==series-1) { max = Array[i][0];

for (int z = 1; z < series; z++) if (Array[i][z] > max) {

max = Array[i][z]; R[i] = z; } } }

for (int j = 0; j < Array[0].length; j++) {

max = Array[0][j]; for (int z = 1; z < row ; z++) if (Array[z][j] < max) {

max = Array[z][j]; S[j] = z; } }

for(int i=0;i<;i++) {

if(S[R[i]]==i) {

\鞍点:\+\+i+\+R[i]+ \+Array[i][R[i]]+\); T=true; } }

if(T==false) \没有鞍点\); } }

运行结果:

8. 声明一个矩阵类Matrix,其成员变量是一个二维数组,数组元素类型为int,设计下面的方法,并声明测试类对这些方法进行测试。

(1)构造方法。

Matrix() ength; j++) + \);

}

}

public void transpose() {ength; i++) {

for (int j = 0; j < ; j++) + \);

}

}

public boolean isTriangular() {ength; j++) { if ((i > j) && (array[i][j] != 0)) { flag = false;

}

}

}

return flag;

}

public boolean isSymmetry() { ength; j++) { if (array[i][j] == array[j][i]) { Symmetry = false;

}

}

}

return Symmetry;

}

public void add(Matrix b) { ength; j++) { [i][j] = array[i][j] + [i][j];

}

}

}

}

程和线程有何区别,Java是如何实现多线程的。

答:区别:一个程序至少有一个进程,一个进程至少有一个线程;线程的划分尺度小于进程;进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 Java程序一般是 继承Thread 类 或者实现 Runnable接口,从而实现多线程。

2.简述线程的生命周期,重点注意线程阻塞的几种情况,以及如何重回就绪状态。

答:线程的声明周期:新建-就绪-(阻塞)-运行--死亡

线程阻塞的情况:休眠、进入对象wait池等待、进入对象lock池等待;

休眠时间到回到就绪状态;在wait池中获得notify()进入lock池,然后获得锁棋标进入就绪状态。

3.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。

(注:两个类,相同一个测试类)

写一个多线程程序实现如下功能:线程A和线程B分别在屏幕上显示信息“…start”后,调用wait等待;线程C开始后调用sleep休眠一段时间,然后调用notifyall,使线程A和线程B继续运行。线程A和线程B恢复运行后输出信息“…end”后结束,线程C在判断线程B和线程A结束后自己结束运行。

start\); try { wait(); } catch (InterruptedException e) {

();

}

+ \);

}

public synchronized void notifyall() { notifyAll(); }

public static void main(String args[]) { test8_4 test = new test8_4();

现一个数据单元,包括学号和姓名两部分。编写两个线程,一个线程往数据单元中写,另一个线程往外读。要求没写一次就往外读一次。 tart(); new Write(data).start();

}

}

运行结果:

6.创建两个不同优先级的线程,都从1数到10000,看看哪个数得快。

(注:线程的优先级别越高低与执行速度没有绝对关系!) 写一个Java程序,以说明较高优先级的线程通过调用sleep方法,使较低优先级的线程获得运行的机会。 (这里可以借鉴课本例8—13) etPriority(2); runners[1].setPriority(5); for(int i=0;i<2;i++){ runners[i].start();

}

}

}

运行结果:

8.主线程控制新线程的生命,当主线程运行一段时间后,控制新线程死亡,主线程继续运行一段时间后结束。

(注:main函数就是主线程,程序里其他的Thread都属于子线程。可以参考课本的例8—1) ;

/* while(i>0){ result=result*i; i--;

}*/

\+num+\+result); \);

}

} ; SonThread newThread = new SonThread(10); ();

两个线程模拟存、取货物。一个线程往一对象里放货物

(包括品名、价格),另外一个线程取货物。分别模拟“放一个、取一个”和“放若干个、取若干个”两种情况。 两个线程模拟对话,任何一个线程都可以随时收发信息。 (这道题本人搞不清楚,暂且用网上的给大家参考下。 听说要用到:

()获取输入流用于“接收” ()获取输出流用于“发送” ) ;

import .*; import .*;

public class test8_10 {

public static void main(String[] args) { try { ;

quals(\)) done = true; } } finally { (); }

} catch (IOException e) { (); } } }

第九章课后习题答案

1.编写一个程序,该程序绘制一个5×9的网络,使用drawLine方法。

写一个程序,该程序以不同的颜色随机产生三角形,每个三角形用不同的颜色进行填充。

写一个Applet,该程序请求用户输入圆的半径,然后显示该圆的直径、周长和面积。 ;

import .*;

import class test9_3 extends JApplet {

loatValue();写一个Applet,向其输入五个数,然后以条形

图(bar graph)的形式来表示这些数。

5.编写一个绘制圆形的程序,当鼠标在绘制区域中单击时,该正方形的左上角顶点应准确的跟随鼠标光标移动,重绘该圆形。 写一个“猜数”程序:该程序随机在1到100的范围内选择一个供用户猜测的整数,然后改程序显示提示信息,要求用户输入一个1到100之间的整数,根据输入偏大、偏小、正确,程序将显示不同的图标。

etDefaultButton(buttonOfSure);nit(); }

}

运行结果:

7.练习使用JscrollPane。使用BorderLayout将JFrame布局分为左右两块;左边又使用GridLayout,包含三个按钮,右边在JLabel里显示一幅图画,按钮控制JLabel是否显示滚动条。 nit(); } }

运行结果: 显示滚动条

点击“滚动”按钮后,没显示滚动条

8.练习使用JList。建立两个JList,双击其中任何一个中的某一项,此项就会跑到另外一个JList中。 etElementAt(index);

(o);

}

if()==jList2){ int index = ());

Object o = ().getElementAt(index);

(o); }

}

@Override

public void mousePressed(MouseEvent e) { nit(); }

}

运行结果:

9.练习使用JComboBox。包括一个JLable、一个JComboBox,可以通过输入或者选择JComboBox中的某一项来控制JLable中文字的大小。 oString();

int intFontSize = (s);

(new Font(\, 0, intFontSize));

nit();

}

}

运行结果:

10.练习使用JTable。包括姓名、学号、语文成绩、数学成绩、总分五项,单击总分会自动将语文数学成绩相加。

11.练习使用对话框。包括一个JLable和两个JButton,按任何一个JButton都会产生一个对话框,按确定后将输入内容在JLable中显示出来。 nit(); }

}

运行结果:

(下面的题目有空再做)

12.练习使用JMenu、JFileChooser、JColorChooser。通过菜单可以打开文件选择对话框,来打开某一指定文本文件,通过菜单可打开颜色选择对话框控制显示文本的颜色。

13.编写一个图形用户界面,包括三个JSlider对象和三个JTexField对象。每个JSlider代表颜色中的红、绿、蓝三部分,它们的值从0到255,在相应的JTextField中显示各个JSlider的当前值。用这三个值作为Color类构造方法的参数创建一个新的Color对象,用来填充一个矩形。

14.编写Application程序,构造一CUI,实现对两个数的相加、减、乘、除功能。用含有三个JTextField、一个JButton、三个JTextField分别用于输入两个数字和运算符号,结果用JLable显示出来。

15.扩充上一个练习,先弹出一对话框,输入密码正确,方能进行计算界面。

16.改造上一个练习为Applet。

17.编写一个程序,以随机的颜色和宽度绘制10条长度随机的直线,使用对象和Fraphics2D类的方法来绘制直线。该绘制区域设置为300×400.

18.编写一个含菜单的应用程序,包含File和Type两个菜单,File菜单中包括“打开”和“退出”两个选项,打开菜单会弹出一个JFileChooser对话框,Type菜单包含一系列复选框,可用于确定文件选择对话框的选择类型。