admin 管理员组

文章数量: 887044


2023年12月23日发(作者:accessdeniedon)

Java语言程序设计(一)课后习题答案

第一章Java语言基础

指出Java语言的主要特点和ava程序的执行过程。

答:强类型。

编译和解释。

自动无用内存回收功能。

面向对象。

与平台无关。

安全性。

分布式计算。

多线程。

2.说出开发与运行Java程序的主要步骤。

答:安装SUN的JDK,配置classpath

编写源文件。

编译。

运行。

3.如何区分应用程序和小应用程序。

答:应用程序必须在一类中定义一个main()方法,该方法代表应用程序的入口。

小应用程序不必定义main()方法,但是必须继承applet类。

4.说出Java源文件的命名规则。

答:和类命名规则一样,首字母大写。

5.选择一种上机环境,参照实例,编写一个输出“hello world!”字样的Java程序。

答:选择SUN的IDE,用UltraEdit-32编写如下:

//

/**

*

这是第一个程序

*@author 饶林

*@see

*/

class HelloWorld{

public static void main(String[] args) {

n("Hello World!");

}

}

1

Java语言程序设计(一)课后习题答案

用什么字符集?共有多少个不同的字符?

答:Java语言使用Unicode字符集,共有65535个字符。

语言标识符的命名规则是什么?

答:由字母(包括英文字母、下划线、美元字符、文字字符)和数字字符组成。

限定标识符的第一个字符不能是数字。

有哪些基本的数据类型,它们的常量又是如何书写的?

答:基本的数据类型也称为原始数据类型,是系统预先规定的一些常用类型。它们是:整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)。

9.指出下列内容那些事Java语言的整形常量,哪些是浮点数类型常量,那些两者都不是?

1)E-4 2)A423 3)-1E-31 4)0xABCL 5).32E31 6)087

8)003 9)0x12.5 10)077 11)11E 12)056L 13)0. 14).0

答:整形常量:4,5,6,8,10,12

浮点型:1,3,9,13,14

两者都不是:2,7,11

第二章运算和语句

字符能参加算术运算吗?

答:能,例如char类型a自加后变b

2.占字节多的变量能直接赋给占字节少的变量吗?

答:不能,需强制类型转换。

3.试用Java语言表达式描述以下数学计算式或逻辑条件:

7)0x L

1)

V=(4/3)**(r,3);

2)R=1/(1/R1+1/R2)

原式

3)y=x5+x3+6

y=pow(x,5)+pow(x,3)+6;

4)F=M1M2/R2

F=M1

*M2

/R*R

5)

(x) / ax + (π*x/2)>0 ? (π*x/2) : - (π*x/2);

6) 0 < a <10

2

Java语言程序设计(一)课后习题答案

a > 0 && a < 10

7) 条件 x=1 与 y=2 有且只有一个成立

( x == 1 && y != 2) || (x != 1 && y == 2)

4.设再求以下表达式之前,整形变量a的值是4,试指出在求表达式之后变量a,b和c的值。

1)b=a*a++;

b = 16, a = 5;

2)c = ++a+a;

c = 10, a = 5;

5.编写一个程序示意前缀++和后缀++的区别,前缀—和后缀—的区别。

答:领悟第四题完全就可以理解前缀++后缀++

-- 亦如此。

6.若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000之内的所有完全数。

解析:什么是数的因子?因子就是所有可以整除这个数的数,但是不包括这个数自身.

//

/**

*

这是第二个程序

*@author 饶林

*@see

*/

public class Praxis2_6{

public static void main(String[] args) {

int i,j,sum;

for(i = 1; i <= 1000; i++){

}

}

}

//sum归0必须在此处

sum=0;

for(j=1; j<= i/2; j++){

if((i%j)==0)

sum = sum+j;

}

if(i == sum)

(i + " ");

3

Java语言程序设计(一)课后习题答案

7.编写输入正实数x,求平方不超过x的最大正整数n,并输出。

解析:

/**

*

这是第三个程序

*@author 饶林

*@see

*/

import .*;

public class Praxis2_7

{

public static void main(String[]args)

{

Scanner consoleScanner = new Scanner( );

("请输入正实数X:" );

int x = t();

int y=(int)((x));

n("n = "+y);

}

}

8.输入正整数n输出n行n列星号字符组成三角图案。

/**

*

这是第四个程序

*@author 饶林

*@see

*/

import .*;

public class Praxis2_8{

public static void main(String[] args){

Scanner consoleScanner = new Scanner();

("请输入正整数x:");

int x = t();

for(int y=0; y< x; y++){

for(int m=x-y-1; m>0; m--){

(" ");

}

for(int n=0; n< y+1; n++){

("*");

}

n();

}

4

Java语言程序设计(一)课后习题答案

}

}

9.设有整形变量x和y的值分别为5和110.指出执行了下列语句后,变量x和y后的值分别是多少?

1)while(x <= y) x*=2;

X=160,y=110;

2) do {x = y/x; y= y-x;} while (y > = 1);

X=18,y=0;

10.水仙花数是一个n( >= 3)位的数,它等于每个数字的n次幂之和。例如,153是一个水仙花数,153=13+53+33,是编写一个程序,求小于999的所有水仙花数。

/**

*

这是第五个程序

*@author 饶林

*@see

*/

public class Praxis2_10{

public static void main(String[] args){

int x,y,z;

for(int m=100; m< 999; m++){

x = m/100;

y = (m%100)/10;

z = (m%100)%10;

if(m== x*x*x+ y*y*y + z*z*z)

(m + " ");

}

}

}

11.编程序解百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡邹三,值钱一,百钱买百鸡,求鸡翁,鸡母,鸡邹各几何?

/**

*

这是第六个程序

*@author 饶林

*@see

*/

public class Praxis2_11

{

public static void main(String args[])

{

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

5

Java语言程序设计(一)课后习题答案

}

}

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

for(int k=0;k<=100;k+=3) //鸡雏的个数必须使3的倍数

{

if(( (5*i+3*j+k/3)==100 )&& (i+j+k==100))

}

n("鸡翁:"+i+"; 鸡母:"+j+"; 鸡雏:"+k);

12.编写程序,按下面的公式计算自然对数底e的值:

e = 1+1/1! + 1/2! + 1/3!......

/**

*

这是第七个程序

*@author 饶林

*@see

*/

public class Praxis2_12

{

public static void main(String args[])

{

}

}

int n=1000; //计算精度

double e=1.0;

for(int i=1;i<=n;i++)

{

e=e+1.0/Praxis2_ial(i);

}

n("e = "+e);

static double factorial(int a) //计算阶乘的静态方法

{

double f=1.0;

for(int j=1;j<=a;j++)

f=f*j;

return f;

}

13.编写程序,用如下公式计算圆周率的近似值:

14.回文整数是正读反读相同的整数,编写一个程序,输入一个整数,判断是否为回文整数。

/**

6

Java语言程序设计(一)课后习题答案

*

这是第八个程序

*@author 饶林

*@see

*/

import .*;

public class Praxis2_14 //输入整数,判断是否是回文整数

{

public static void main(String args[])

{

int a[]=new int[100];

int i=0;

boolean b=true;

Scanner consoleScanner = new Scanner( );

}

}

("请输入一个int型整数:" );

int x = t();

int test=x;

while(test>0) //把整数的各个位上的数存到数组里

{

a[i]=test%10;

test=test/10;

i++;

}

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

{

if(a[j]!=a[i-j-1])

{

b=false;

break;

}

}

if(b) n(x+"是回文整数");

else n(x+"并不是回文整数");

15.草地上有一堆野果,有一只猴子每天要吃掉一半又一个,五天后刚好吃完,问有多少个,猴子每天吃多少个?

/**

*

这是第九个程序

*@author 饶林

*@see

*/

public class Praxis2_15{

7

Java语言程序设计(一)课后习题答案

}

public static void main(String[] args){

int day,x1,x2;

day = 5; x2= 0;

while(day > 0){

x1 = (x2+1)*2;

x2 = x1;

day--;

}

}

n("共有"+ x2+"个桃子。");

n("----------------------------");

for(int i=1; i< 6; i++){

int east;

east = x2/2 + 1;

x2 = x2/2-1;

n("第" +i + " 天吃" + east + "个。" );

}

n("----------------------------");

第三章面向对象编程基础

1.什么是面向对象技术?它有什么优点?

答:程序设计者考虑的是对象的描述,对象间的关系,类的管理、什么时候什么地方调用对象的那一种方法。

最大的优点是面向对象编程能有效地支持重用,是超大规模的程序也变得相对容易维护。

2.面向对象的程序设计与面向过程的程序设计有什么区别?

答:面向过程的语言编程编程模式是:

程序 = 数据结构 + 算法

编程时需要考虑的是程序做什么,怎么做,重点考虑每个实现的细节。

面向对象的编程模式:

程序 = 对象 + 消息

程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的那一种方法。

3.在程序中对象有什么区别?

答:类是对同一种对象的描述,类概括了同类对象的共有性质:数据和方法。类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。

8

Java语言程序设计(一)课后习题答案

4.举例说明类方法和实例方法,以及类变量和实例变量的区别。什么情况下用实例变量?什么情况下用类变量?

答: 一般静态的数据和方法使用类变量。

5.子类能继承超类的那些成员变量和方法?

子类

No

Yes

Yes

Yes

超类

Private

(默认)

Protect

Public

6.子类在什么情况下能隐藏超类的成员变量和方法?

答:重写

7.在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?

答:不应许,子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。

例如:

class R{

int add(){

int a=2;

return a++;

}

}

public class RR extends R{

float add(){

float a=2.0;

return a;

}

public static void main(String[] args){

n(add());

}

}

9

Java语言程序设计(一)课后习题答案

8.试说出对象、类、继承和多态性的概念。

9.略

10.接口与抽象类的区别。

答:抽象类:what can I do?

接口:I can do it.

例子:就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。 门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。

11.指出Applet的程序结构及各方法的作用。

答:Java API 的 Applet 类为您提供设计 applet 程序外观并管理 其动作时所需要的支持。该类提供一种叫做 Panel(面板)的图形 用户界面(GUI)组件以及大量方法。要创建一个 applet 程序,就需要扩展该 Applet 类(或创建子类)并实现您所需要的外观和动作。

12.以下程序的错误:

:5: 无法从静态上下文中引用非静态 变量 a

float c = a + b;

^

13.试声明一个复数类Complex。

解析:

//样例大家扩展

class Complex{

double a,b;

Complex(){}

Complex(double a, double b){

this.a = a;

this.b = b;

}

public String Print(){

String result= new String(this.a + (b>0?"+":"") + (b!=0?this.b + "i" :""));

return result;

10

Java语言程序设计(一)课后习题答案

}

public Complex add(Complex val){

Complex result = new Complex();

result.a = this.a + val.a;

result.b = this.b + val.b;

return result;

}

}

public class TestComplex{

public static void main(String[] args){

Complex complex1 = new Complex(1.0,2.0);

Complex complex2 = new Complex(2.0,3.0);

n((complex2).Print());

}

}

第四章数组和字符串

1.举例说明如何声明、创建初始化数组。

答:有三种方法。书P69,不一一举例了。

2.略

3.一个数组能存储不同类型的元素吗?

答:不能。

4.编写一个Java程序,形成以下形式的二维数组,并输出。

解析:

public class Arry{

public static void main(String[] args){

int[][] a = {{1,2,9,10,25},

{4,3,8,11,24},

{5,6,7,12,23},

{16,15,14,13,22},

{17,18,19,20,21}};

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

for(int j= 0; j

if(a[i][j]<10){

(" " + a[i][j]+ " ");

}else

(a[i][j]+ " ");

11

Java语言程序设计(一)课后习题答案

}

}

}

}

n();

中字符数组与字符串有什么区别?

答:数组是一个容器。

6.确定一个字符数组长度与确定一个Sting对象的长度有什么区别?

答:确定字符数组的长度用属性length,而String对象用方法length()。

类的方法转换。

解析:

public class Convert{

public static void main(String[] args){

String a="StrIng";

n(rCase());

n(new String(rCase()));

}

}

8.使用String类的concat方法:

例:

public class TestConcat{

public static void main(String[] args){

String a = new String("raoliv->");

String b = new String("");

n((b));

}

}

9.试利用类继承声明实现MyDate类。。。

解析:

10.略

11.编写实现从两字符串找出最长的相同字符序列的代码。

解析:得到字符串str1,str2后,有一个为空则子列为空。

如果都不为空,开始下面的步骤。

12

Java语言程序设计(一)课后习题答案

求得两列的长度分别为n1,n2。

动态生n2行n1列矩阵(二维数组)。

取str2中每个元素(记位置为i)与str1中元素(记位置为j)逐个比较,如果相等则为矩阵中相应行列坐标的元素赋值为1,否则为0(可用循环嵌套完成)。

比如str1(abc0cbad) str2(cba1abc)两串的话,可以得到如图所示矩阵。

然后,不难看出,要进行如下步骤。

定义strax,用来记录最大子列中元素个数。

定义数组l[n2],用来记录最大子列的首字符地址(因为可能有不同最大子列,故用数组,而不是单个变量)。

判断矩阵中每一个元素,是否为1,如果是则记下此时行地址到l数组,然后判断相对于这个元素的下一行下一列的元素是否为1,如果是则继续判断,一直到为0。记下此次判断(即一个while循环)中“1”的个数n,存入变量strax。

对于矩阵中的每一个元素都这么判断,如果判断中n的值大于strax那么把n付给strax,同时把这个子列的首地址付给l[0],l[0]后面的元素全赋值为-1。如果,某次判断得到的n与strax相同,即有相同最大子列,那么把它的首地址存入l数组的下一个位置。

当这个矩阵的每一个元素都判断完毕后,会得到strax,和数组l,然后用循环做如下输出过程: 依次以l数组中的每个元素为首地址,输出str2字符串中以相应序号开头的strax个字符,那么完成所有最大子列的输出。例子:

输入:

aabcbcb

bcabcbac

输出:

abcb

public class test1{

public static void main(String[] args){

int max = 0;

int current = 0;

String str1 = new String("aabcbcb");

String str2 = new String("bcabcbac");

int len1 = ();

int len2 = ();

int arr[][];

arr = new int[len1][len2];

//初始化数组

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

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

arr[i][j] = 0;

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

char a = (k);

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

char b = (l);

13

Java语言程序设计(一)课后习题答案

}

}

if (a==b){

arr[k][l]=1;

}else{

arr[k][l] = 0;

}

}

}

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

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

if(arr[i][j] == 1&&arr[i-1][j-1] ==1)

arr[i][j] = arr[i-1][j-1] + 1;

if(max < arr[i][j]){

max = arr[i][j];

current = i;

}

if(max == 0){

n("没有找到。");

}else{

n(ing(current+1-max,max));

}

}

12.整理字符串将前后空白删去。并把中间的多个空白保留一个。

解析:用String类的split 方法拆分再连接然后用trim方法去掉前后空格。

public class test2{

public static void main(String[] args) {

String s = " hello raoliv-> Welcome to ";

}

}

n("原来为:" + s);

s= ();

s = eAll("s+","#");

String ss[] = ("#");

("替换后:");

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

(ss[i]+ " ");

}

14

Java语言程序设计(一)课后习题答案

13.略

第五章图形界面设计(一)

与AWT有何关系?

答:Swing是AWT的提高和扩展,共存于Java基础类。

AWT依赖于平台绘制用户界面组件,而Swing有自己的机制。

2.什么是组件对象?什么是容器?容器和其它类型的组件有什么不同?

答:略P86

3.略

4.略

5.略

6.编一小应用程序,小应用程序窗口有一个按钮,当点击时点击的次数会显示在按钮上。

解析:先用javac编译成class字节码,再在当前文件夹下建一个html页面源文件如下.。

import .*;

import .*;

import .*;

public class Praxis5_6 extends Applet implements ActionListener

{

int num=0;

JButton button1;

public void init()

{

setSize(300,200);

button1=new JButton(""+num);

ionListener(this);

add(button1);

}

public void actionPerformed(ActionEvent e)

{

t(""+num++);

}

}

/*html页面

15

Java语言程序设计(一)课后习题答案

*/

7.创建一个有文本框和三个按钮的程序当按下某个按钮时使不同的文字显示在文本框中。

解析:

import .*;

import .*;

import .*;

public class Praxis5_7{

public static void main(String[] args){

ButtonDemo buttondemo = new ButtonDemo();

}

}

class ButtonDemo extends JFrame implements ActionListener{

JTextField text;

JButton button1,button2;

ButtonDemo() {

super("Praxis5_8");

Container con=tentPane();

setLayout(new FlowLayout());

text=new JTextField(10);

button1 = new JButton("raoliv");

button2 = new JButton("欢迎来到");

ionListener(this);

ionListener(this);

(text);

(button1);

(button2);

setSize(300,200);

setVisible(true);

}

public void actionPerformed(ActionEvent e){

if(rce() == button1)

t(el());

else if(rce() == button2)

t(el());

16

Java语言程序设计(一)课后习题答案

}

}

8.编写一个有两个文本狂的小应用程序,在第一个文本框输入英文单词,第二个文本框自动显示汉语解释,或在第一个文本框输入单词,第二个文本框显示英语。

解析:只增加了一个单词raoliv->饶林 饶林->raoliv 可以多写几个.。

import .*;

import .*;

import .*;

public class Praxis5_8{

public static void main(String[] args){

MyWindow a = new MyWindow();

aultCloseOperation(_ON_CLOSE);

}

}

class MyWindow extends JFrame implements ActionListener{

JTextField text1,text2;

JLabel label;

MyWindow() {

super("Praxis5_8");

setLayout(new FlowLayout());

text1 = new JTextField(10);

text2 = new JTextField(10);

table(false);

label = new JLabel("输入字符:");

tentPane().add(label);

tentPane().add(text1);

tentPane().add(text2);

ionListener(this);

setSize(400,100);

setVisible(true);

validate();

}

public void actionPerformed(ActionEvent e){

String word = t();

if(("raoliv"))

}

t("饶林");

else if(("饶林"))

t("raoliv");

else

t("没有找到");

17

Java语言程序设计(一)课后习题答案

}

9.编写一个有标签、有文本框、文本区和两个按钮的小应用程序。,,,

import .*;

import .*;

import .*;

import .*;

public class Praxis5_9{

public static void main(String[] args){

MyWindow a = new MyWindow();

aultCloseOperation(_ON_CLOSE);

}

}

class MyWindow extends JFrame implements ActionListener{

JLabel label;

JTextField text;

JButton button1,button2;

JTextArea textArea;

JPanel pan1,pan2;

MyWindow(){

super("Praxis5_9");

setSize(300,300);

setLayout(new FlowLayout());

label = new JLabel();

text = new JTextField(15);

textArea = new JTextArea(10,10);

button1 = new JButton("SUM");

button2 = new JButton("AVG");

pan1 = new JPanel();

pan2 = new JPanel();

JScrollPane jsp = new JScrollPane(textArea);

ticalScrollBarPolicy(AL_SCROLLBAR_ALWAYS);

izontalScrollBarPolicy(NTAL_SCROLLBAR_ALWAYS);

getContentPane().add(jsp);

getContentPane().add(button1);

getContentPane().add(button2);

getContentPane().add(label);

getContentPane().add(text);

18

Java语言程序设计(一)课后习题答案

}

ionListener(this);

ionListener(this);

setVisible(true);

validate();

}

public void actionPerformed(ActionEvent e){

String s = t();

StringTokenizer t = new StringTokenizer(s,"'n',;. ");

int n = okens();

int a[] = new int[n];

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

a[i] = nt(ken());

}

if(rce() == button1){

}

t("输入数的和为:");

int sum = 0;

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

sum = sum+ a[i];

}

t("" + sum);

}else

if(rce() == button2){

}

t("输入数平均值为:");

int sum = 0;

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

sum = sum+ a[i];

}

t("" + sum/n);

10.布局如下:

import .*;

import .*;

public class Praxis5_10{

public static void main(String args[]){

window win=new window();

19

Java语言程序设计(一)课后习题答案

aultCloseOperation(_ON_CLOSE);

}

}

class window extends JFrame{

JScrollPane jsp1,jsp5;

JPanel panel2,panel3,panel4,panel6;

JTextArea jsp1_Text,jsp5_Text;

JLabel panel2_Label;

JTextField panel2_Field;

JPanel

panel3_p1,panel3_p2,panel4_p1,panel4_p2,panel4_p3,panel6_p1,panel6_p2,panel6_p3;

JButton panel4_b1,panel4_b2;

window(){

super("Praxis5_10");

setSize(600,120);

setLayout(new GridLayout(2,3));

setVisible(true);

jsp1_Text=new JTextArea("文本区(带滚动条)");

JScrollPane jsp1=new JScrollPane(jsp1_Text);

panel2=new JPanel();

panel2_Label=new JLabel("标签");

panel2_Field=new JTextField("文本框");

panel3=new JPanel();

panel3_p1=new JPanel();

panel3_p2=new JPanel();

panel4=new JPanel();

panel4_b1=new JButton("按钮");

panel4_b2=new JButton("按钮");

panel4_p1=new JPanel();

panel4_p2=new JPanel();

panel4_p3=new JPanel();

jsp5_Text=new JTextArea("文本区(带滚动条)");

JScrollPane jsp5=new JScrollPane(jsp5_Text);

panel6=new JPanel();

panel6_p1=new JPanel();

panel6_p2=new JPanel();

panel6_p3=new JPanel();

20

Java语言程序设计(一)课后习题答案

ticalScrollBarPolicy(AL_SCROLLBAR_ALWAYS);

izontalScrollBarPolicy(NTAL_SCROLLBAR_ALWAYS);

ticalScrollBarPolicy(AL_SCROLLBAR_ALWAYS);

izontalScrollBarPolicy(NTAL_SCROLLBAR_ALWAYS);

out(new GridLayout(2,1));

(panel2_Label);(panel2_Field);

out(new GridLayout(1,2));

panel3_kground();

panel3_kground();

(panel3_p1);(panel3_p2);

out(new GridLayout(1,3));

panel4_out(new GridLayout(2,1));

panel4_(panel4_b1);panel4_(panel4_b2);

panel4_kground();

panel4_kground();

(panel4_p1);(panel4_p2);(panel4_p3);

out(new GridLayout(1,3));

panel6_kground();

panel6_kground();

panel6_kground();

(panel6_p1);(panel6_p2);(panel6_p3);

add(jsp1);

add(panel2);

add(panel3);

add(panel4);

add(jsp5);

add(panel6);

validate();

}

}

21

Java语言程序设计(一)课后习题答案

第六章图形界面设计(二)

1.设计一个面板,该面板中有四个运动项目选择框和一个文本区。当某个选择项目被选中时,在文本区中显示该选择项目。

解析:选多个

import .*;

import .*;

import .*;

import .*;

class panel extends JPanel{

JCheckBox box1,box2,box3,box4,box5;

//ButtonGroup g;

JTextArea text;

panel(){

setLayout(new GridLayout(1,6));

//g = new ButtonGroup();

box1 = new JCheckBox("高丽华");

box2 = new JCheckBox("饶林");

box3 = new JCheckBox("谌凯");

box4 = new JCheckBox("韩伟虎");

box5 = new JCheckBox("梁继杰");

text = new JTextArea(5,5);

//(box1);(box2);(box3);(box4);(box5);

add(box1); add(box2); add(box3);add(box4);add(box5);

add(text);

}

}

class MyWindow extends JFrame implements ItemListener{

panel panel1;

MyWindow(){

super("Praxis6_1");

Container con = tentPane();

out(new FlowLayout());

setSize(400,100);

panel1 = new panel();

add(panel1);

mListener(this);

mListener(this);

mListener(this);

mListener(this);

mListener(this);

22

Java语言程序设计(一)课后习题答案

setVisible(true);

pack();

}

public void itemStateChanged(ItemEvent e){

if(mSelectable()== 1)

("高丽华"+ "n");

else if(mSelectable()== 2)

("饶林"+ "n");

else if(mSelectable()== 3)

("谌凯"+ "n");

else if(mSelectable()== 4)

("韩伟虎"+ "n");

else if(mSelectable()== 5)

("梁继杰"+ "n");

}

}

public class Praxis6_1{

public static void main(String[] args){

MyWindow win = new MyWindow();

aultCloseOperation(_ON_CLOSE);

}

}

2. 设计一个面板,该面板中有四个运动项目单选框和一个文本框。当某个选择项目被选中时,在文本框中显示该选择项目。

解析:只能选一个,按上一题,先把注释填上,然后修改如下。

public void itemStateChanged(ItemEvent e){

if(mSelectable()== 1)

}

}

. setText ("高丽华);

else if(mSelectable()== 2)

. setText ("饶林");

else if(mSelectable()== 3)

. setText ("谌凯");

else if(mSelectable()== 4)

. setText ("韩伟虎");

else if(mSelectable()== 5)

. setText ("梁继杰");

23

Java语言程序设计(一)课后习题答案

3.略

4. 设计一个窗口,取默认布局BorderLayout布局。北面添加一个列表,列表有4门课程选项。中心添加一个文本区,当选择列表中的某门课程后,文本区显示相应课程的介绍

解析:

import .*;

import .*;

import .*;

import .*;

import .*;

class window extends JFrame implements ListSelectionListener

{

JList list;

JTextArea textArea;

String names[]={"C++","JAVA","马哲","法基"};

String times[]={"好学的课","好学的课","无聊的课","无聊的课"};

window()

{

super("Praxis6_4");

textArea=new JTextArea(5,10);

list=new JList(names);

ectionMode(_SELECTION);

tSelectionListener(this);

kground();

add(list,);

add(textArea,);

setBounds(50,50,400,200);

setVisible(true);

validate();

}

public void valueChanged(ListSelectionEvent e)

{

JList listValue=(JList)rce();

int i=ectedIndex();

t(""+names[i]);

(""+times[i]+"开课");

}

}

public class Praxis6_4

{

public static void main(String args[])

24

Java语言程序设计(一)课后习题答案

}

{

}

window win=new window();

aultCloseOperation(_ON_CLOSE);

5.略了吧。。。自己改改。

6. 设计一个JFrame窗口,窗口中心添加一个文本区。另添加4个菜单,每个菜单都有菜单项,每个菜单项都有对应快捷键,选择某个菜单项时,窗口中心的文本区显示相应信息。

解析:仿记事本。

import .*;

import .*;

import .*;

import .*;

import .*;

class MyWindow extends JFrame implements ActionListener{

JMenuBar menubar;

JMenu menu1,menu2,menu3,menu4;

JMenuItem item1,item2,item3,item4,item5,item6,item7,item8,item9;

JTextArea text;

MyWindow(){

super("Praxis6_6");

setSize(500,500);

menubar = new JMenuBar();

menu1 = new JMenu("文件(F)");

menu2 = new JMenu("编辑(E)");

menu3 = new JMenu("查看(V)");

menu4 = new JMenu("帮助(H)");

item1 = new JMenuItem("新建(N)");

item2 = new JMenuItem("打开(O)");

item3 = new JMenuItem("保存(S)");

item4 = new JMenuItem("退出(X)");

item5 = new JMenuItem("全选(A)");

item6 = new JMenuItem("时间/日期(F5)");

item7 = new JMenuItem("状态(S)");

25

Java语言程序设计(一)课后习题答案

item8 = new JMenuItem("帮助主题(H)");

item9 = new JMenuItem("关于(A)");

text = new JTextArea();

monic(_F);

monic(_E);

monic(_V);

monic(_H);

(menu1);(menu2);(menu3);(menu4);

(item1);(item2);(item3);(item4);

(item5);(item6);

(item7);

(item8);(item9);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

setJMenuBar(menubar);

add(text,);

setVisible(true);

validate();

}

public void actionPerformed(ActionEvent e){

t(ionCommand() + "被选中。");

}

}

public class Praxis6_6{

public static void main(String[] args){

MyWindow win = new MyWindow();

aultCloseOperation(_ON_CLOSE);

}

}

26

Java语言程序设计(一)课后习题答案

7. 设计一个窗口,窗口有两个依赖于它的对话框,一个对话框负责求园的面积;另一个负责求三角形的面积。窗口中一个菜单负责打开这两个对话框。几个图形的数据通过对话框输入。

8.略9.略

10. 编写一个演示鼠标拖动和移动的程序。界面设有一个文本区,当鼠标拖动或移动时,在文本区中输出指明鼠标拖动或鼠标移动,及鼠标位置的字样。

import .*;

import .*;

import .*;

class MyWindow extends JFrame implements MouseMotionListener{

JTextArea text;

MyWindow(){

super("Praxis6_10");

setSize(500,500);

text = new JTextArea();

seMotionListener(this);

add(text,);

setVisible(true);

validate();

}

public void mouseDragged(MouseEvent e){

eground();

t("鼠标拖拽:坐标:("+()+","+()+")");

27

Java语言程序设计(一)课后习题答案

}

public void mouseMoved(MouseEvent e){

eground();

t("鼠标移动:坐标:("+()+","+()+")");

}

}

public class Praxis6_10{

public static void main(String[] args){

MyWindow a = new MyWindow();

aultCloseOperation(_ON_CLOSE);

}

}

第七章图形、图像与多媒体-不重要

1.绘制五角星。

第八章多线程

1.建立线程的两种方法?

答:继承Thread类或实现Runnable接口。

2.略

3.编写一个小应用程序,有两个线程,一个负责模仿圆转运动另一个模仿椭圆运动。

解析:

import .*;

import .*;

import .*;

28

Java语言程序设计(一)课后习题答案

public class Praxis8_3 extends Applet implements Runnable{

Thread redBall,blueBall;

Graphics redPen,bluePen;

int blueSeta=0,redSeta=0;

int a = 150, b = 100;

public void init(){

redBall = new Thread(this);

blueBall = new Thread(this);

redPen = getGraphics();

bluePen = getGraphics();

or();or();

setBackground();

}

public void start(){

();();

}

public void run(){

while(true){

if(tThread() == redBall){

int x = (int)(80.0*(/180.0*redSeta));

int y = (int)(80.0*(/180.0*redSeta));

or();

al(100+x,100+y,10,10);

redSeta+=3;

if(redSeta>=360) redSeta=0;

x = (int)(80.0*(/180.0*redSeta));

y = (int)(80.0*(/180.0*redSeta));

or();

al(20+5,20+5,160,160);

al(100+x,100+y,10,10);

try{

(20);

}

catch (InterruptedException e){

}

}

else if(tThread() == blueBall){

int x=(int)(a*(/180.0*blueSeta));

int y=(int)(b*(/180.0*blueSeta));

or();

al(300+x,100+y,10,10);

blueSeta+=3;

if(blueSeta>=360) blueSeta=0;

29

Java语言程序设计(一)课后习题答案

}

}

}

}

x=(int)(a*(/180.0*blueSeta));

y=(int)(b*(/180.0*blueSeta));

or();

al(300+5-a,100+5-b,a*2,b*2);

al(300+x,100+y,10,10);

try{(20);}

catch(InterruptedException e){}

4.略5.略

6.模拟多人排队买球票,设球票五元一张,购票者有持五元的有持5,10,20,50,100的已知排队者持钱情况序列,试给出排队购票情况。

第九章输入输出流

1.略

2.设计一个界面,有一个文本区和一个按钮,输出到指定文件中。

import .*;

import .*;

30

Java语言程序设计(一)课后习题答案

import .*;

import .*;

import .*;

import .*;

public class Praxis9_2{

public static void main(String[] args){

new MyWindow();

}

}

class MyWindow extends JFrame implements ActionListener{

JPanel panel;

JButton button;

JTextArea textArea;

JFileChooser filedialog;

File file=null;

FileWriter filewriter;

BufferedWriter out;

JLabel label;

MyWindow(){

super("Praxis9_2");

button = new JButton("另存为");

panel = new JPanel();

textArea = new JTextArea();

filedialog = new JFileChooser();

label = new JLabel();

ionListener(this);

(button);

out(new GridLayout(14,1));

add(panel,);

add(new JScrollPane(textArea),);

add(label,);

setBounds(50,50,500,300);

setDefaultCloseOperation(_ON_CLOSE);

validate();

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

logTitle("另存为");

int result=veDialog(this);

if(result==E_OPTION)

{

31

Java语言程序设计(一)课后习题答案

file=ectedFile();

t(""+olutePath());

saveAsText();

}

else if(result==_OPTION)

{

t("你没有选择任何文件");

}

}

public void saveAsText()

{

try

{

filewriter=new FileWriter(file);

out=new BufferedWriter(filewriter);

String

name=e().substring(e().lastIndexOf(".")+1,e().length());

(t(),0,(t().length()));

();

();

}

catch(Exception e){t(""+e);}

}

}

3. 在一个文件中,每行存的是整数,各行整数个数不等,要求读如这个文件,然后计算每行整数的和,并存到另一个文件中。

import .*;

import .*;

import .*;

import .*;

import .*;

import .*;

public class Praxis9_3

{

public static void main(String args[])

{

new Window9_3();

}

}

class Window9_3 extends JFrame implements ActionListener

{

32

Java语言程序设计(一)课后习题答案

JPanel panel;

JButton buttonSave,buttonCount,buttonOpen;

JTextArea textArea;

JLabel label;

JFileChooser filedialog;

File file=null;

Window9_3()

{

super("第九章,第三题");

buttonOpen=new JButton("打开文件");

buttonSave=new JButton("保存到文件");

buttonCount=new JButton("计算结果");

label=new JLabel(" ");

panel=new JPanel();

textArea=new JTextArea();

filedialog=new JFileChooser();

ionListener(this);

ionListener(this);

ionListener(this);//给按钮加监控

(buttonOpen);(buttonCount);(buttonSave);//把按钮添加到panel面板上

add(panel,);

add(new JScrollPane(textArea),);

add(label,);

setBounds(50,50,500,300);

setDefaultCloseOperation(_ON_CLOSE);

validate();

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

if(rce()==buttonOpen)

{

logTitle("打开");

int result=enDialog(this);

if(result==E_OPTION)

{

file=ectedFile();

t(""+olutePath());

showText();

}

else if(result==_OPTION)

33

Java语言程序设计(一)课后习题答案

t("你没有选择任何文件n");

}

if(rce()==buttonSave)

{

logTitle("另存为");

int result=veDialog(this);

if(result==E_OPTION)

{

file=ectedFile();

t(""+olutePath());

saveAsText();

}

else if(result==_OPTION)

{

t("你没有选择任何文件n");

}

}

if(rce()==buttonCount)

{

t(null);

countResult();

}

}

public void showText()

{

try

{

FileReader file_reader=new FileReader(file);

BufferedReader in=new BufferedReader(file_reader);

String ss=new String();

while((ss=ne())!=null)

{

(ss+'n');

}

();

}

catch(FileNotFoundException e2) {t("文件没有找到n");}

catch(IOException e3){}

etPosition(0);

}

public void saveAsText()

{

try

34

Java语言程序设计(一)课后习题答案

}

{

}

FileWriter file_writer=new FileWriter(file);

BufferedWriter out=new BufferedWriter(file_writer);

(t(),0,(t().length()));

();

();

catch(FileNotFoundException e2){t("文件没有找到n");}

catch(IOException e3){}

}

public void countResult()

{

try

{

FileReader file_reader=new FileReader(file);

BufferedReader in=new BufferedReader(file_reader);

String temp=new String();

while((temp=ne())!=null)

{

int number=0;

StringTokenizer token=new StringTokenizer(temp," ,.");

while(eTokens())

{

number+=nt(ken());

}

}

(temp+"---------相加结果是:"+number+'n');

}

();

}

catch(Exception e2) {t("error"+e2+'n');}

4.在一个文本区中输入数据,把输入的数据分析成各个单词,然后排序显示到第二个文本区中,并通过文件保存对话框保存到文件中。

//在text1输入英语,在text2输出排序好的单词

import .*;

import .*;

import .*;

import .*;

35

Java语言程序设计(一)课后习题答案

import .*;

import .*;

class Window9_4 extends JFrame implements CaretListener,ActionListener

{

JTextArea text1;

JTextArea text2;

JButton buttonClear,buttonSave;

JPanel panel1,panel2;

File file;

JFileChooser filedialog=null;

JLabel label;

Window9_4()

{

super("第九章,第四题");

filedialog=new JFileChooser();

text1=new JTextArea("TextArea",15,30);

text2=new JTextArea("JTextArea",15,30);

buttonClear=new JButton("清 空");

buttonSave=new JButton("保存到文件");

panel1=new JPanel();

panel2=new JPanel();

label=new JLabel(" ");

table(false);

etListener(this);

ionListener(this);

ionListener(this);

(buttonClear);(buttonSave);

(new JScrollPane(text1));

(new JScrollPane(text2));

add(panel1,);

add(panel2,);

add(label,);

setBounds(20,20,800,600);

setDefaultCloseOperation(_ON_CLOSE);

validate();

setVisible(true);

}

public void caretUpdate(CaretEvent e)

{

String s=t();

StringTokenizer fenxi=new StringTokenizer(s," , 'n'");

int n=okens();

String a[]=new String[n];

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

36

Java语言程序设计(一)课后习题答案

{

String temp=ken();

a[i]=temp;

}

(a);

t(null);

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

{

(a[i]+"n");

}

}

public void actionPerformed(ActionEvent e)

{

if(rce()==buttonClear)

{

t(null);

}

if(rce()==buttonSave)

{

logTitle("另存为");

int result=veDialog(this);

if(result==E_OPTION)

{

file=ectedFile();

t(""+olutePath());

saveAsText();

}

}

}

public void saveAsText()

{

try

{

FileWriter file_writer=new FileWriter(file);

BufferedWriter out=new BufferedWriter(file_writer);

(t(),0,(t().length()));

();

();

}

catch(FileNotFoundException e2){t("文件没有找到");}

catch(IOException e3){}

}

}

37

Java语言程序设计(一)课后习题答案

public class Praxis9_4

{

public static void main(String args[])

{

new Window9_4();

}

}

5.在一个文本区中输入数据,将文本区中的数据存入文件中,在又用户指定的序号,程序从文件中读取对应序号数据,输出到文本框中。

import .*;

import .*;

import .*;

import .*;

import .*;

import .*;

public class Praxis9_5

{

public static void main(String args[])

{

new Window9_5();

}

}

class Window9_5 extends JFrame implements ActionListener,ItemListener

{

JPanel panel;

JButton buttonSave;

JComboBox combo;

JTextArea textArea;

JTextField textField;

JFileChooser filedialog;

File file=null;

JLabel label;

String stringArray[]=new String[100];

Window9_5()

{

super("第九章,第五题");

buttonSave=new JButton("保存到文件");

combo=new JComboBox();

panel=new JPanel();

label=new JLabel(" ");

38

Java语言程序设计(一)课后习题答案

textArea=new JTextArea();

textField=new JTextField(30);

filedialog=new JFileChooser();

ionListener(this);

mListener(this);

(buttonSave);(combo);(textField);//把按钮,check添加到panel面板上

add(panel,);

add(new JScrollPane(textArea),);

add(label,);

setBounds(50,50,600,300);

setDefaultCloseOperation(_ON_CLOSE);

validate();

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

if(rce()==buttonSave)

{

logTitle("另存为");

int result=veDialog(this);

if(result==E_OPTION)

{

file=ectedFile();

t(""+olutePath());

saveAsText();

}

else if(result==_OPTION)

{

t("你没有选择任何文件");

}

}

}

public void itemStateChanged(ItemEvent e)

{

int i=ectedIndex();

t(stringArray[i]);

n(""+i);

}

public void saveAsText()

{

try

{

FileWriter file_writer=new FileWriter(file);

39

Java语言程序设计(一)课后习题答案

}

}

}

BufferedWriter out=new BufferedWriter(file_writer);

(t(),0,(t().length()));

();();

FileReader file_reader=new FileReader(file);

BufferedReader in=new BufferedReader(file_reader);

String ss=new String();

int i=0;

while((ss=ne())!=null)

{

m("第"+(i+1)+"行");

stringArray[i]=ss;

i++;

}

t(stringArray[0]);

();

catch(FileNotFoundException e2){t("文件没有找到");}

catch(IOException e3){}

6.一个文本区,一个按钮,点击按钮选择文件,然后又把文件中的内容输入到文本区中。

import .*;

import .*;

import .*;

import .*;

import .*;

import .*;

public class Praxis9_6

{

public static void main(String args[])

{

new Window9_6();

}

}

class Window9_6 extends JFrame implements ActionListener

{

JPanel panel;

JButton readButton,openButton;

40

Java语言程序设计(一)课后习题答案

JTextArea textArea;

JFileChooser filedialog;

File file=null;

JLabel label;

Window9_6()

{

super("第九章,第六题");

openButton=new JButton("选择文件");

readButton=new JButton("读取文件");

panel=new JPanel();

textArea=new JTextArea();

filedialog=new JFileChooser();

label=new JLabel(" ");

ionListener(this);

ionListener(this);

(openButton);(readButton);

add(panel,);

add(new JScrollPane(textArea),);

add(label,);

setBounds(50,50,500,300);

setDefaultCloseOperation(_ON_CLOSE);

validate();

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

if(rce()==openButton)

{

logTitle("打开");

int result=enDialog(this);

if(result==E_OPTION)

{

file=ectedFile();

t(null);

t(""+olutePath());

}

else if(result==_OPTION)

{

t("你没有选择任何文件");

}

}

if(rce()==readButton)

{

readText();

41

Java语言程序设计(一)课后习题答案

}

}

public void readText()

{

try

{

FileReader file_reader=new FileReader(file);

BufferedReader in=new BufferedReader(file_reader);

String ss=new String();

while((ss=ne())!=null)

{

(ss+'n');

}

();

}

catch(FileNotFoundException e2) {t("文件没有找到");}

catch(IOException e3){}

etPosition(0);

}

}

42


本文标签: 方法 程序 语言 字符 类型