您的当前位置:首页正文

Java习题集3

2024-10-18 来源:威能网
2 4 6 8 10 28 32 53 简答题 单选全部 判断题全部

1 2 3 5 6 7 10 21 写程序题 2 3 7 8 24 25 编程题

JAVA语言程序设计习题集

50-55接口。

一、简答题

1、Java程序分为哪两大类,它们之间有哪些相同点?主要区别有哪些? 答:Java程序分为Java Application和Java Applet。

相同点有两个:(1)两类程序都由一个或多个以.class为后缀的文件组

成;(2)两类程序都需要用户系统安装Java虚拟机(JVM)。Java虚拟机能够载入并翻译Java程序,并且可以提供Java内核包的实现。

区别有:(1)Java Applet程序可以被嵌入HTML网页内,从而可以在网

络上发布,当网页被浏览时它们可以在浏览器中运行;而Java Application程序却不支持网页嵌入和下载。(2)Java Applet程序只能在与Java兼容的容器中运行,例如网络浏览器;而Java Application程序却没有这个限制。(3)一个Java Applet程序必须定义一个Applet类的子类,一个Java Application程序也可以定义一个Applet类的子类,但这不是必须的,一个 Java Application程序必须在一个类中定义一个main方法,而一个Java Applet 程序并不定义main方法,它的执行是由Applet类定义的多个方法控制的。

2、Java程序是由什么组成的?Java 源文件的命名规则是怎样的?

答:一个Java 程序是由若干个类组成的。但只能有一个类是public 类。Java源文件命名规则是:源文件名必须与其中的public 类的名字相同,扩展名是java;如果源文件中没有public 类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了。

3、Java语言与Java技术的关系如何?Java语言包括哪两部分?

答:Java语言是Java技术的基础。Java语言包括语法规则和Java类库两部分。

4、开发与运行Java程序需要经过哪些主要过程? 答:源程序编辑、字节码编译和解释运行。

5、为什么一个Java文件编译后可以获得多个字节码文件?

答:这是因为一个源文件中可有多个类,文件经过编译后,每个类就生成一个字节码文件(扩展名为class)。

6、简述Java应用程序和Java小应用程序各用什么方式解释运行的?

答:Java应用程序和Java小应用程序的源代码编辑与字节码编译生成过程是一样的,而其执行也都是解释执行其编译好的字节码文件,只是Java应用程序需使用独立的Java解释器来解释执行其字节码文件,而Java小应用程序的字节码文件必须嵌入到HTML语言的文件中并由负责解释HTML文件的WWW浏览器充

- 1 -

当其解释器,来解释执行Java小程序的字节码文件。

7、面向对象的开发方法与传统的面向过程的开发方法有什么不同?

答:传统的面向过程的开发方法是把现实世界的问题转化成计算机逻辑,而面向对象技术是计算机逻辑来模拟现实世界的问题。

8、什么是对象、类和实体?它们之间的关系如何?试述下面的说法映射到面向对象的计算机逻辑中分别对应什么概念。

(1)计算机92班 (2)计算机92班的同学刘利 (3)大学生 (4)X大学的大学生 (5)班级

答:对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现;类是同种对象的集合与抽象。

(1)班级类的对象 (2)大学生类的对象 (3)大学生类 (4)大学生类的子类 (5)班级类

9、对象有哪些属性?在计算机逻辑中如何描述这些属性?

答:对象有状态、行为、标志三个属性;在计算机逻辑中分别用对象的变量、方法和对象名来描述这三个属性。 10、面向对象的开发包括哪些过程?

答:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试。

11、面向对象程序设计方法有哪几个最重要的特点?

答:抽象、封装、继承、多态。

12、什么是父类(超类)?什么是子类?父类、子类间属性有何关系?

答:当两个类具有继承关系时,被继承的类称为父类或超类;继承了父类或超类的所有数据和操作的类称为子类。父类是所有子类的公共属性的集合,而每一个子类则是父类的特殊化,是在公共属性的基础上的功能、内涵的扩展和延伸。 13、什么是封装?

答:封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。

14、使用继承有什么好处?什么是单重继承?什么是多重继承?Java采用的是单重继承还是多重继承? 答:使用继承的主要好处是使得程序结构清晰,降低了编码和维护的工作量。只有一个单一父类称为单重继承。一个类可以有一个以上的父类称为多重继承。Java采用的是单重继承。

15、什么是多态?实现多态有哪些方式?

答:一个程序中同名的不同方法共存的情况称为多态。实现多态的方式有覆盖和重载。 16、什么是覆盖多态?什么是重载多态?覆盖多态和重载多态分别如何区分不同的同名方法?

答:子类对继承自父类的方法的重新定义就称为方法的覆盖,这种多态称为

- 2 -

覆盖多态;类对自身已有的同名方法的重新定义称为重载,这种多态称为重载多态。覆盖多态以对象名或类名为前缀来区分不同的同名方法;而重载多态则是使用不同的参数列表来区分不同的同名方法。 17、类及类成员的访问控制符有哪些?

答:public,protected,private,private protected。

????18、构造函数特殊在哪里?构造函数什么时候执行?被谁调用?

答:构造函数的特殊性在于它既可以从父类那里继承,也可以相互重载。

构造函数在创建新对象时执行,由系统自动调用。

19、类的访问说明符有哪些?

答:有public,final,abstract,protected(不加任何说明的缺省值) 20、方法访问说明符有哪些?

答:有public,protected,private,default。 21、关键字static可以修饰哪些类的组成部分? 答:可以修饰属性、方法、静态初始化器。

22、什么是静态初始化器?静态初始化器与构造函数有什么不同?

答:静态初始化器是由关键字static引导的一对大括号括起的语句组,其作用与类的构造函数有些相似,都是用来完成初始化的工作,但静态初始化器在三点上与构造函数有根本的不同:

(1)构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。

(2)构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用执行。

(3)不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。

23、静态属性有什么特点?类对象可以访问或修改静态属性吗?

答:静态属性是类的属性,不专属于某个方法,类对象可以访问或修改静态属性。

24、设某程序创建了类MyClassl的两个对象,试写出静态初始化器和构造函数执行的前后次序与次数。

答:先执行类MyClassl的静态初始化器一次,再执行构造函数两次。 25、抽象方法有什么特点?抽象方法的方法体在何处定义?

答:抽象方法的特点是用abstract修饰符修饰,只有方法头没有具体的方法体。

抽象方法在定义该方法的抽象类的非抽象子类中定义。

26、final修饰符可以用来修饰什么?被final修饰符修饰后有何特点?

答:final修饰符可用来修饰类、属性、方法和终结器。

被final修饰符修饰的类没有子类。被final修饰符修饰的属性在程序整个执行过程中都不能改变。被final修饰符修饰的方法是功能和内部语句不能更改的最终方法。被final修饰符修饰的终结器(以称析构器——finalize()

- 3 -

方法,是在对象被删除前进行收尾工作的方法)也是不能更改的。 27、哪些修饰符不能组合使用?

答:abstract与private,abstract与final,abstract与static。 28、书写语句完成下面的功能。

(1)定义一个类,其名称为MyClass,类体为空,它可以被所有的其他类访问。

(2)将对象Objectl的属性fieldl在屏幕上显示出来。

答:(1)public class MyClass{}

(2)System.out.print(Object1.field1); 29、书写语句完成下面的功能。

(1)调用对象Objectl的方法methodl,把返回值赋值给变量Hold。 (2)定义一个整型属性Mine,使得只有这个类本身可以访问它。 答:(1) Hold=Object1.method1(); (2) private int Mine; 30、书写语句完成下面的功能。

(1)为类Classl定义一个整型变量field2,使得所有其他类都可以访问它。 (2)定义一个无形式参数无返回值的方法method2,使得使用类名Classl作前缀就可以调用它。

答:(1) public class Class1{public int field2;} (2) static void method2() 31、书写语句完成下面的功能。

(1)为类Class2编写构造函数的方法头,该构造函数不接受形式参数。 (2)为类Class2编写构造函数的方法头,该构造函数接受两个整型形式参数。

答:(1) Class2()

(2) Class2(int c1,int c2) 32、书写语句完成下面的功能。

(1)创建类Classl的一个对象Objectl,定义这个类的一个引用Refl,把对象Objectl的引用赋给Ref1。

(2)为类Classl创建一个静态整型变量s_data。

答:(1) Class1 Object1=new Class1();Class1 Ref1=Object1; (2) static int s_data;

33、Java中如何定义继承关系?写出定义类库中的类java.awt.Frame的子类MyFrame的类头的语句。

答:Java中是通过extends关键字定义继承关系的,其语句的一般格式是: class 子类 extends 父类。

import java.awt.*;

class MyFrame extends Frame

34、设父类SuperClass中定义了公共整型属性SuperProperty,SuperClass的

- 4 -

子类SubClass中定义了公共整型属性SubProperty,则属性SubClass.SuperProperty是否存在?来自何处?

答:存在,这个属性是从其父类那里继承来的。

35、什么是多重继承?Java是否支持多重继承?Java采取什么机制来替代多重继承?

答:一个子类有多个父类的情况称为多重继承,Java不支持多重继承,Java用实现接口的方法替代多重继承。 36、什么是属性(域)的隐藏?

答:子类重新定义一个与从父类那里继承来的属性完全相同的属性,称为属性的隐藏。

37、一个类里是否可以有同名属性共存的情况?是否最多只能有两个同名的属性。

答:子类重新定义父类的同名属性可以实现同名属性共存,若此子类的同名属性又被其子类所隐藏,可以有更多的同名属性共存。

38、一个类里有同名属性共存的情况下,如何分别操纵这些同名的属性?

答:使用子类定义的方法将操纵子类定义的属性;使用继承自父类的方法将操纵父类定义的属性。

39、子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?此时子类中还能找到父类原来的方法吗?

答:这种情况称为方法的覆盖,

40、同名的不同方法共存的情况称为什么?如何区分这些同名方法? 答:这种情况称为方法的重载。不同类的同名方法用类名区分,同类的同名方法用形式参数数目、顺序和类型区分。 41、Java中的多态有哪些方式?

答:Java中的多态有两种方式,第一种是子类对父类方法的覆盖,第二种是同类中方法的重载。 42、‚重载中,两个同名方法只要返回类型或参数列表不同即可互相分辨‛这种说法是否正确?为什么?

答:不正确,仅仅返回类型不同不能区分同名方法,必须参数列表不同。 43、试解释this和super两个关键字,其中this指代的是一个类还是一个具体的对象?

答:this表示的是当前对象本身,即this代表了当前对象的一个引用。super表示的是当前对象的父类对象,是当前对象的直接父类对象的引用。

this指代的是一个具体对象。

44、子类SubClass重新定义并覆盖了父类SuperClass中的方法methodl(),如何使子类能够调用父类原先定义的方法methodl()? 答:super.methodl();

45、构造函数可以继承吗?子类继承父类的构造函数应遵循哪些原则?

答:子类可以继承父类的构造函数,构造函数的继承原则有:

- 5 -

(1)子类无条件地继承父类的不含参数的构造函数;

(2)如果子类自己没有构造函数,则它将继承父类的无参数构造函数作为自己的构造函数,如果子类自己定义了构造函数,则在创建新对象时,它将先执行继承自父类的无参数构造函数,然后再执行自己的构造函数。

(3)对于父类的含参数的构造函数,子类可以通过在自己构造函数中使用super关键字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。

46、一个构造函数如何调用同类的其他构造函数?如何调用父类的构造函数? 答:在同类中使用this,调用父类的构造函数使用super。 47、什么是包?如何创建包?为什么要使用包?包物理地对应什么?

答:包是相关类的松散集合。使用package语句可以创建包。使用包可以方便相关的类共同工作,也方便其他包中的类引用它们。包物理地对应文件夹,其中应保存包中类的字节码文件。

48、试写出一个语句创建一个名为MyPackage的包,这个语句应该放在程序的什么位臵?

答:package MyPackage;

应该在程序第一句。

49、试写出引用MyPackage中所有类的语句和引用MyPackage包中的一个类MyClassl。

答:引用MyPackage中所有类的语句是 import MyPackage.*;

引用MyPackage包中的一个类MyClass的语句是import MyPackage.MyClassl;

50、什么是接口?它起到什么作用?

答:接口是一种特殊的类,是用来实现类间多重继承功能的结构。 51、接口中包括什么?接口中的各成员的访问控制符是一样的吗?是什么?

答:接口中包括常量与抽象方法。接口中的属性成员的访问控制符都是public static final,接口中的所有方法的访问控制符都是public abstract,都是公共方法。 52、创建接口使用什么关键字?接口可以有父接口吗?试书写语句创建一个名为 MyInterface的接口,它是继承了MySuperInterfacel和MySuperInterface2两个接口的子接口。

答:创建接口使用interface关健字,接口可以有父接口。

Interface MyInterface extends

MySuperInterfacel,MySuperInterface2 53、一个类如何声明实现一个接口?

答:在类头处使用implements关键字。

54、实现接口的类是否必须覆盖该接口的所有抽象方法?

答:如果这个类是非抽象类的话,就必须覆盖该接口的所有抽象方法。

- 6 -

55、实现接口的抽象方法时,方法头应该与接口中定义的方法头完全一致,但是有时需要增加一个public修饰符,为什么?

答:接口的抽象方法的访问限制符都己指定为public,所以类在实现方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口中定义的方法的访问控制范围。

56、程序中的错误分为哪两类? 答:编译错误和运行错误。

57、对于编译错误和运行错误,分别应如何排除?

答:排除编译错误可以借助于编译器的错误提示,排除运行错误要使用断点、单步运行等用户控制流程的调试手段。

58、写出三个常见的系统定义的异常,它们都是什么类的子类?

答:三个常见的系统异常是InterruptedException,ClassNotFoundException ,IOException 。它们都是Exception类的子类。 59、用户程序如何抛出自己的异常?系统定义的异常如何抛出?

答:用户程序使用throw关键字抛出异常。系统定义的异常由系统在合适的时刻自动抛出。

60、阅读下面的程序并写出类MyClass3的所有成员,并写明它们定义自哪里。 classMyClassl {

private int proll; double prol2; ’ }

class MyClass2 extends MyClassl {

private double prol2; int pr021; }

class MyClass3 extends MyClass2 {

private int pr021; double pr031;

}

答:pr012(MyClassl),pr02l(MyClass3),pr03l(MyClass3)。 61、阅读下面的程序片段并回答问题。 classClassl

{

int fieldl; int field2;

- 7 -

void methodl() {

System.out.println(‚我是Classl的第一个方法‛); }

void method2() {

System.out.println(‚我是Classl的第二个方法‛); } }

class Class2 extends Classl {

int field Childl; void methodChildl() {

System.out.println(‚我是Class2的第一个方法‛); } }

(1)C1assl被称为是C1ass2的什么? C1ass2被称为是C1assl的什么?

(2)Classl有哪些方法和属性?Class2有哪些方法和属性?其中哪些与C1assl的方法和属性有关,是什么关系? 答:(1)父类,子类。

(2)Classl包括属性fieldl和field2,方法methodl和method2;Class2包括自身定义的属性fieldChildl和自身定义的方法methodChildl,以及它从父类继承来的属性与方法(本题中包括父类的所有属性和方法)。 62、阅读下面的程序片段并回答问题。 class Classl {

int fieldl;

private int field2; void methodl() {

System.out.println(‚我是Classl的第一个方法‛); }

void method2() {

System.out.pdntln(‚我是Classl的第二个方法‛); } }

- 8 -

class Class2 extends Classl {

int fieldChildl; int fieldl;

void methodChildl() {

System.out.pnntln(‚我是Class2的第一个方法‛); }

void methodl() {

System.out.println(‚我是Class2的第二个方法‛); }

}

(1)C1assl被称为是C1ass2的什么? C1ass2被称为是C1assl的什么? (2)Classl有哪些方法和属性?Class2有哪些方法和属性?其中哪些与C1assl的方法和属性有关,是什么关系?

答:(1)父类,子类。

(2)Classl包括属性fieldl和field2,方法methodl和method2;Class2包括自身定义的属性fieldChildl和fieldl以及从父类继承的属性fieldl,方法包括Class2自身定义的methodChildl和methodl及其从父类继承的method2。 63、说明下面两个程序片段中,parent类与child类之间的关系有何不同?分别是什么?

(1)class parent {

int fieldl; }

class child extends parent {

int fieldChild; }

(2)class child {

int fieldChild; }

class parent {

child myChild;

- 9 -

}

答:(1)两个类是继承关系。 (2)两个类是包含关系。

64、阅读下面的程序,说明其中的关键字this和super代表了谁?起到什么作用?

class Parent {

void printMe() {

System.out.pnntln(‚I am parent!‛); } }

class Child extends Parent {

void printMe() {

System.out.println(‚I am child!‛); }

void printAll() {

super.printMe(); this.printMe(); printMe(); }

}

答:super代表了父类对象,this代表了当前对象,使用super特指调用当前对象有直接父类对象的方法。使用this特指调用当前对象自身的方法。 65、Java中最基础的类库是什么?谁是所有类的根类?做算术运算应该使用什么类?

答:Java中最基础的类库是java.lang;Object类是所有类的根类;做算术运算应该使用Math类。

66、Applet的哪个方法仅在开始时执行一次?哪个方法在用户每次访问包含Applet的HTML文件时都被调用?Applet的哪个方法可以用来在其中画图?Applet的哪个方法可以自动调用前面的一个方法?哪个方法用来更新Applet的画面?哪个方法在用户离开Applet所在的HTML页面时被调用?

答:init方法仅在开始时执行一次;start方法在用户每次访问包含Applet的HTML文件时都被调用;paint方法可以用来在其中画图;repaint方法可以自动调用前面的一个方法;update方法用来更新Applet的画面;stop方法在用户离开

- 10 -

Applet所在的HTML页面时被调用。

67、为程序建立图形用户界面通常需要哪些步骤?

答:(1)设计图形用户界面的层次组织; (2)设计并实现图形用户界面的外观;

(3)设计并实现图形用户界面的事件响应。

68、Java的图形界面的容器共有几种常用的布局管理策略?

答:有五种常用的布局,它们是FlowLayout、BorderLayout、CardLayout、GridLayout、null

69、对话框Dialog对象根据其性质不同,可以划分为哪两种类型?缺省情况下创建的对话框属于哪种类型?

答:可划分为有模式对话框和无模式对话框两种类型,缺省情况下创建的对话框是无模式的。 70、有模式的对话框最突出的特点是什么?如果一个对话框的目的在于警告或提醒用户(例如在用户删除某组件之前的确认),这个对话框应该是有模式的还是无模式的?

答:有模式对话框的特点是阻断其父组件接受事件和消息的渠道。如果一个对话框的目的在于警告或提醒用户,那么这个对话框应该是有模式的。 71、试述流的概念,最基本的输入输出流类是什么?

答:流是指在计算机的输入与输出之间运动的数据的序列。 最基本的输入输也流类是InputStream和OutputStream

72、写出下面这些输入输出流类的输入输出操作的格式特点。 〃 (1)InputStream和OutputStream

(2)DataInputStream和DataOutputStream (3)FileInputStream和FileOutputStream (4)PrintStream

(5)RandomAceessFile 答:(1)一个字节一个字节地输入输出数据。 (2)按照不同的数据类型输入输出。 (3)同InputStream和OutputStream (4)把数据转化成字符串输出。

(5)同DataInputStream和DataOutputStream 73、程序与磁盘文件交互数据之前应该先完成什么操作?

答:先建立与该文件交换数据的输入输出流对象。

74、什么情况下创建FileInputStream对象可能引发IOException?

答:在指定的文件不存在的情况下创建FileInputStream对象可能引发IOException。

75、简述程序、进程和线程三个概念。线程有哪几个基本的状态?

答:程序是一段静态的代码,它是应用软件执行的蓝本。

进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完

- 11 -

毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程。

线程是比进程更小的执行单位。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。

线程有新建、就绪、运行、阻塞、死亡五个基本状态。

76、在程序中使用多线程可以用哪两种基本方法?写出Runnable接口所包含的方法

答:可以使用派生Thread子类和实现Runnable接口。 Runnable接口只有一个run()方法。 77、哪些情况下一个活动的线程会终止?

答:执行其stop()方法或其run()方法运行完毕。 78、叙述一种引起死锁的情况。

答:当两个或多个线程相互等待对方占据的同步资源时就会引起死锁。 79、什么是URL?一个URL地址由哪些部分组成?

答:URL又称统一资源定位器,是一个指向Web上的Web页、二进制文件以及其它信息对象的地址。

一个URL地址由协议名、主机名、目录文件名和接口号组成。 80、根据Applet的安全性限制,它不能访问文件,但是有一种方法可以使Applet查看某文件的内容,请写出这种方法。

答:利用URL指向WWW上的某个资源文件,调用URL对象的openStream方法,Applet就可以查看这个文件的内容。

二、单选题

1、类变量的修饰符是( C )

A、public B、class C、static D、void 2、类方法的修饰符是( A )

A、static B、class C、public D、void 3、使用super关键字调用父类的构造方法时,super 必须( A ).

A、是子类构造方法中的头一条语句。 B、是子类构造方法中的最后一条语句。

C、是父类构造方法中的头一条语句。 D、是父类构造方法中的最后一条语句。

4、判断两个字符串tom和jerry相等的表达式是( C ) A、tom=jerry B、tom= =jerry

C、tom.equals(jerry) D、tom equals jerry 5、TextField类的方法getText( )获取文本的类型是(B) A、一个字符 B、字符串

C、int型数值 D、float型数值

6、TextField类的一个构造方法TextField(String s,int x),其中的参数x是指定(D)

- 12 -

A、允许输入字符的个数 B、文本框内的空格数 C、参数s的长度 D、文本框的长度 7、设臵ActionEvent事件监视器的方法是( C )

A、addActionEvent( ) B、addActionEventListener( )

C、addActionListener( ) D、addactionPerformedListener( ) 8、设臵ItemEvent事件监视器的方法是( B )

A、addItemEvent( ) B、addItemListener( )

C、addItemEventListener( ) D、addItemStateListener( ) 9、设臵TextEvent事件的监视器的方法是( D )

A、addTextEvent( ) B、addTextEventListener( ) C、addTextAreaListener( ) D、addTextListener( ) 10、ActionListener接口只有一个方法,这个方法是( A ) A、actionPerformed( ) B、actionEvent( ) C、ActionListener( ) D、action( ) 11、ItemListener接口只有一个方法,这个方法是( A ) A、itemStateChanged( ) B、itemEvent( )

C、itemListener( ) D、itemSelected( ) 12、TextListener接口只有一个方法,这个方法是( C ) A、textListener( ) B、textEvent( ) C、textValueChanged( ) D、textSelected( ) 13、MouseListener接口有五个方法,这个五方法是( A ) A、mousePressed( ) 、mouseReleased()、mouseEntered()、mouseExited()、mouseClicked() B、mousePressed( ) 、mouseReleased()、mouseEntered()、mouseDragged()、mouseClicked()

C、mousePressed( ) 、mouseReleased()、mouseEntered()、mouseMoved()、mouseClicked()

D、mousePressed( ) 、mouseReleased()、mouseEntered()、mouseMotion()、mouseClicked()

14、MouseMotionListener接口有两个方法,这个两方法是( D ) A、mousePressed( ) 、mouseReleased() B、mouseDragged()、mouseClicked() C、mousePressed( ) 、mouseMoved() D、mouseDragged( ) 、mouseMoved()

15、TextField类的对象文本框上引发ActionEvent事件的操作是(D) A、改变文本框中的字符 B、在文本框内单击

C、在文本框内双击 D、在文本框内按回车键

16、TextArea类的对象文本区上引发TextEvent事件的操作是(A) A、改变文本区中的文本的内容 B、在文本区内单击

- 13 -

C、在文本区内双击 D、鼠标在文本区内移动

17、CheckBox类可以创建两种选择框:单选和复选,创建‛单选‛选择框的构造方法是( B )

A、Checkbox() B、Checkbox(String s, Boolean b,

CheckboxGroup g) C、Checkbox(String s) D、Checkbox(String s,Boolean b)

18、Checkbox类的方法getState() 可以返回选择框的选中状态,如果是选中,该方法的返回值是( A )

A、true B、false C、1 D、0

19、下拉列表Choice类的方法getSelectedIndex( ) 可以返回当前下拉列表中被选中的选项的( B )

A、名字 B、索引 C、选中项数 D、选项总数

20、下拉列表Choice类的方法getSelectedItem( ) 可以返回当前下拉列表中被选中的选项的( A )

A、名字 B、索引 C、选中项数 D、选项总数

21、List创建的对象是滚动列表,当用鼠标单击滚动列表的某个选项后就发生( D )

A、ActionEvent事件

B、MouseClick事件 C、MouseEvent事件 D、ItemEvent事件

22、List创建的对象是滚动列表,当用鼠标双击滚动列表的某个选项后就发生( A )

A、ActionEvent事件

B、MouseClick事件 C、MouseEvent事件 D、ItemEvent事件

23、菜单项(MenuItem)上发生的事件是( A ) A、ActionEvent事件

B、MouseClick事件 C、MouseEvent事件 D、ItemEvent事件

24、Runnable接口只有一个方法,这个方法是( B )

A、start() B、run() C、init() D、begin()

25、启动线程,即使线程从新建状态转入就绪状态并进入就绪队列排队的方法是( A )

A、start() B、run() C、init() D、begin() 26、线程的sleep方法的功能是( B ) A、使线程死亡

- 14 -

B、线程暂时放弃CPU资源

C、线程休息一会,但不放弃CPU资源 D、线程结束 27、当多个线程调用同一方法时,为使线程同步,该方法应使用修饰关键字( C ) A、protected B、void C、synchronized D、public 28、当创建一个URL对象url后,完成定位到这个url的方法是( D ) A、getAppletContext( ) B、URL(url)

C、showDocument().getAppletContext() D、getAppletContext().showDocument() 29、建立客户端套接字的构造方法名是( A )

A、Socket() B、ServerSocket() C、UrlSocket() D、UdpSocket() 30、建立服务器端套接字的构造方法名是( B )

A、Socket() B、ServerSocket() C、UrlSocket() D、UdpSocket() 31、创建一个数据库连接对象con后,con调用( B )方法创建一个SQL语句对象。

A、create( ) B、createStatement() C、Statement() D、creatSql()

- 15 -

三、判断题 1、如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。(√) 2、如果定义的类中没有给出构造方法,系统也不会提供构造方法。(╳) 系统给出与类同名的构造方法。 3、可以通过类名直接访问类变量。(√)

4、实例方法既能被对象调用,又能用类名直接调用。(╳) 实例方法只能通过对象来调用。

5、类方法既能被对象调用,又能用类名直接调用。(√) 6、一个类的所有对象共享类变量。(√)

7、类体的内容由两部分组成,一部分是变量的定义,一部分是方法的定义。(√) 8、方法的定义由两部分组成,方法的声明和方法体。(√) 9、Java类的继承允许一个子类可以有多个父类。(╳) Java只允许单重继承。

10、多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。(√)

11、Java不允许使用int型变量指定数组的大小。(╳)

与C语言不同,Java允许使用int型变量指定数组的大小。

12、容器本身也是一个组件,因此,可以把一个容器添加到另一个容器中实现容器的嵌套。(√)

13、Java Applet小程序必须由浏览器来运行。(√)

14、文本框(TextField类的对象)和文本区(textArea类的对象)的不同之处是二者对事件的处理不同。(╳)

二者的文本处理方式与方法也不同。

15、文本区(textArea类)的方法setText(String s)和append(String s)的功能是相同的。(╳)

SetText(String s)方法将在文本区中重写文本s并覆盖原先的文本,而append(String s)只是在文本区尾部追加文本s。 16、标签的功能只是显示文本,不能动态地编辑文本。(√) 17、Panel类的实例及它的子类的实例都是容器。(√) 18、Canvas类的实例及它的子类的实例都是容器。(╳) Canvas画布,可在其中绘画,不是容器类。

19、一个容器设臵布局的方法是setLayout(布局对象)。(√) 20、BorderLayout布局是将容器设臵成上、中、下三个区域。(╳) 该布局是将容器设臵成东、南、西、北、中五个区域。

21、用GridLayout布局的容器调用add方法将组件加入到容器中时,可以直接设定在某个网格单元中添加组件。(╳) 只能按网格顺序添加组件。

22、Java Applet小程序类及其子类所创建的对象默认的布局是BorderLayout。

- 16 -

(╳)

是FlowLayout布局。

23、Panel类及其子类所创建的对象默认的布局是FlowLayout。(√) 24、Frame类及其子类所创建的对象默认的布局是BorderLayout。(√) 25、Dialog类及其子类所创建的对象默认的布局是FlowLayout。(╳) 是BorderLayout布局。

26、选择框Checkbox类的方法setState(boolean b)只能将选择框设臵成选中状态。(╳)

参数b为false为未选中状态。

27、下拉列表Choice类的方法select(int index)可以把下拉列表中索引值是index的选项设臵成选中状态。(√)

28、组件调用方法setSize(int w,int h)可以设臵组件的大小。(√) 29、组件调用方法setLocation(int x,int y)可以设臵组件在容器中的位臵。(√) 30、组件调用方法setBounds(int x,int y,int w,int h)可以设臵组件在容器中的位臵和组件的大小。(√)

31、组件调用方法setBackground(Color c)可以设臵组件上的字体的颜色。(╳) 是设臵组件背景颜色。

32、组件调用repaint()方法时,会自动调用update()方法,而update()方法的功能是清除paint()以前所画的内容。(√)

33、将菜单条放在窗口上的方法是setMenuBar(MenuBar bar)。(√) 34、菜单放在菜单条里,菜单项放在菜单里。(√) 35、Menu 是MenuItem的子类。(√)

36、对话框必须要依赖于某个窗口或组件。(√)

37、有模式对话框处于激活状态时,程序仍能激活它所依赖的窗口或组件。(╳) 按有模式对话框定义,不能激活其依赖的窗口。 38、进程是程序的一次动态执行过程。(√)

39、一个进程在其执行过程中,可以产生多个线程。(√)

40、Java中编程实现多线程应用有两个途径:一种是用Thread类的子类创建线程,另一种是用Thread类创建线程。(√)

41、用Thread类创建线程时,创建目标对象的类必须实现Runnable方法。(√) 42、FileInputStream使用字节流读取文件,而FileReader使用字符流读取文件。(√)

43、RandomAccessFile类创建的流既可以作为源也可以作为目地的。(√) 44、客户端和服务器端呼叫的端口号必须相同。(√)

45、Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。(√) 46、一个Java类可以有一个父类,并实现多个接口。(√)

47、如果try块中没有语句产生异常,则在执行完try块中的全部语句后,再进入try块后面的catch块。(╳) 不产生异常就不进入catch块。

- 17 -

48个try块都必须有至少一个catch块与之对应,当一个try块有多个catch块与之对应时,应该把参数为父类异常对象的catch块排在后面。(√) 49、Java中画圆和画椭圆使用的是相同的方法。(√)

50、调用画矩形方法需要给出的是矩形左上角和右下角的坐标。(╳) 给出左上角座标及矩形有长度和宽度。

51、在Applet中,绘制图形的语句不一定写在paint方法里,但是需要paint方法把其Graphics对象参数g传递给这个用户自己的绘图方法。(√)

52、在Applet中显示一幅图像,首先要把它调入内存,保存在一个Image对象中,然后调用drawImage()方法画出这个图像。(√)

53、用setVisible(false)方法可以使组件隐藏不可见,但是一旦隐藏便不能恢复显示。(╳)

可用setVisible(true)恢复可见。

54、Label、TextField和TextArea对象都拥有方法setText(),用来设臵其中的文本内容。(√)

55、对于一个Button对象,可以调用方法getLabel()获取其上的标签,从而判断是哪个按钮。(√)

56、一个Checkbox对象既可以作为一个复选按钮,也可以作为一个单选按钮组中的一个按钮。(√)

57、一个复选按钮实现的是‚二选一‛的结构,一个单选按钮组实现的是‚多选一‛的结构。(√)

58、List对象可以实现‚多选一‛结构,也可以实现‚多选多‛结构,完全由创建List对象时的参数确定。(√)

59、所有的鼠标事件都由实现了MouseListener监听接口的监听者来处理。(╳) 鼠标移动等由MouseMotionListener接口监听处理。

60、当用户鼠标移入Applet的区域范围时触发mouseEnter()方法,当用户鼠标移出Applet的区域范围时触发mouseExit()方法。(√)

61、调用KeyEvent对象的方法getKeyChar()可以获得用户操作的键盘按键的字符值,调用getKeyText()可以获得用户操作的一些特殊字符,例如‚F3‛等。(√) 62、鼠标点击在屏幕上任何位臵处,都可以激活mouseClicked()方法。(╳) 只在对鼠标事件监听的区域内可以。

63、使用BorderLayout的容器最多只能放臵5个组件,如果要放臵更多的组件,则需要使用多层容器。(√)

64、使用BorderLayout和GridLayout布局策略的容器,其中的所有空间都被组件占满,没有任何空隙。(╳)

组件间可以设臵横向和纵向空隙。

65、使用GridLayout布局策略的容器中,所有的组件都有相同大小。(√) 66、一个容器中可以混合使用多种布局策略。(√)

67、可以使用append()方法把一个字符串添加到一个TextField中原有字符串的后面。(√)

- 18 -

68、Canvas对象外观类似于Panel对象,也可以产生鼠标事件;但是它不是容器,不能在其中添加其它的组件;它拥有paint(Graphics g)方法,所以可以在其上画图。(√)

69、新创建的Frame窗框对象,会自动显示在屏幕上。(╳) 必须用setVisible(true)方法才能显示在屏幕上。

70、使用add()方法可以向容器中添加组件,使用remove()方法可以将组件从容器中移出。(√)

71、Menu对象中只能加入MenuItem对象。(╳) 还可以加入Menu对象,以便设臵子菜单。 72、设一个窗口中包含一个按钮,当用户点击该按钮时会弹出一个无模式对话框,则当窗口关闭时该对话框也随之关闭。(√) 73、MenuItem也可以添加到MenuBar上。(╳) 只能添加到Menu上。

74、利用File对象不但可以判断一个文件或目录是否存在、是否可读可写、是否是文件、是否是目录,而且可以执行创建子目录、列举目录中的文件、获得文件长度、删除文件、修改文件名字等操作。(√)

75、打开一个文件输入输出流不需使用try-catch结构。(╳) 打开文件必须使用try-catch结构。

76、一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run0方法是空的,其中没有内容;所以用户程序要么派生一个Thread的子类并在子类里重新定义run() 方法,要么使一个类实现Runnable接口并书写其中run()方法的方法体。(√)

77、下面的语句将线程对象mt的优先级设臵为12:mt.setPriority(12);(√) 78、某程序中的主类不是Thread的子类,也没有实现Runnable接口,则这个主类运行时不能控制主线程睡眠。(╳)

79、sleep()和wait()方法都使当前运行线程放弃处理器和它所占用的同步资源管理。(╳)

sleep()方法是,而wait()方法不是。

80、挂起、阻塞或等待的线程都能够恢复运行,但是停止运行的线程将不可能再复生。(√)

- 19 -

四、写出下列程序或程序片段的运行结果1、

public class E1 {

public static void main(String args[]) {

int sum=0;

for(int k=1;k<=10;k++) {

sum=sum+k; }

System.out.println(‚sum=‛+sum); } }

答:运行结果是 sum=55 2、

import java.awt.*; public class E2 {

public static void main(String args[]) {

int p=1;

for(int k=1;k<=5;k++) {

p=p*k; }

System.out,println(‚p=‛+p); } }

答:运行结果是 p=120 3、

public class Class1 {

public static void main (String[] args)

- 20 -

}

{ }

int a[]={23,67,11,40,15}; int b[]={47,23,29,10,15}; int c[]={1,1,1,1,1};

for(int i=0;ifor(int i=0;iSystem.out.print(c[i]+\System.out.println();

答:运行结果:70,90,40,50,30,

4、

import java.util.*; public class E1 {

public static void main(String args[]) {

String s=‛I am Wanglin,she is my friend,she is a student‛; StringTokenizer fenxi=new StringTokenizer(s,‛ ,‛); int n=fenxi.countTokens(); while(fenxi.hasMoreTokens()) {

String s1=fenxi.nextToken(); System.out.print(s1+‚ ‛); }

System.out.println();

System.out.println(‚count=‛+n); } }

答:运行结果:I am Wanglin she is my friend she is a student count=11

5、int i;

- 21 -

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

if(i==3) break;

System.out.print(i); }

System.out.println(‛i=‛+i);

答:运行结果:0 1 2 i=3 6、int i;

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

if(i==3) continue;

System.out.print(i); }

System.out.println(‛i=‛+i);

答:运行结果:0 1 2 4 i=5

7、for(int i=0;i<2;i++) {

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

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

System.out.print(’*’); System.out.println(); }

System.out.println(); }

答:运行结果:********** ********** **********

********** ********** **********

8、public class UseRef

- 22 -

{

public static void main(String args[]) {

MyClass1 myobj,myref; myobj=new MyClass1(-1); myref=myobj;

System.out.println(‛the original data is:‛+myobj.getData()); myref.setData(10);

System.out.println(‛now the data is:‛+myobj.getData()); }

}

class MyClass1 {

int data;

MyClass1(int d) {

data=d;

}

int getData() {

return data; }

void setData(int d) {

data=d; } }

答:运行结果为:the original data is :-1 now the data is:10

9、 class Parent {

void printMe() {

System.out.println(‛I am parent!‛); } }

class Child extends Parent

- 23 -

{

void printMe() {

System.out.println(‛I am child!‛); }

void printAll() {

super.printMe(); this.printMe();

printMe();

} }

public class Test_this {

public static void main(String args[]) {

Child myC=new Child(); myC.printAll(); }

}

答:运行结果为: I am parent! I am child! I am child!

10、public static void main(String args[])

{

int array[]={1,2,3,4,5}; printArray(array); could_modify(array); printArray(array);

}

static void could_modify(int a[]) {

for(int i=0;istatic void printArray(int a[]) {

- 24 -

for(int i=0;i}

答:运行结果为:1 2 3 4 5 0 2 6 12 20

11、public static void main(String args[]) {

char a[][]=new char[3][3]; for(int i=0;ifor(int j=0;j=j)

a[i][j]=’*’; else

a[i][j]=’’;

for(int i=0;ifor(int j=0;j}

答:运行结果为:* * * * * *

12、public static void main(String arg[]) {

int array[]=new int[10]; for(int i=0;i<10;i++) array[i]=i+1;

System.out.println(sum(array,array.length)); }

static int sum(int a[],int n) {

if (n>1)

- 25 -

return a[n-1]+sum(a,n-1); else

return a[0];

}

答:运行结果为:55

13、public class CreateString

{

public static void main(String args[]) {

char cArray[]={‘一’,’路’,’顺’,’风’,’!’}; String sArray[]=new String[7];

StringBuffer sb=new StringBuffer(‚很高兴见到您!‛); String s=‛别来无恙?‛; sArray[0]=new String(s); sArray[1]=new String();

sArray[2]=new String(‚节日快乐!‛); sArray[3]=new String(cArray);

sArray[4]=new String(cArray,2,3); sArray[5]=new String(sb);

for(int i=0;i答:运行结果为:别来无恙? 节日快乐! 一路顺风! 顺风!

很高兴见到您! Null 14、class Student

{

int number; String name;

Student(int number,String name) {

this.number=number;

- 26 -

this.name=name;

System.out.println(\"I am \"+name+\" my number is \"+number); } }

class Univer_Student extends Student {

boolean 婚否;

Univer_Student(int number,String name,boolean b) {

super(number,name); 婚否=b;

System.out.println(\"婚否=\"+婚否); } }

public class Class1 {

public static void main (String[] args) throws java.io.IOException {

int i;

Univer_Student zhang=new Univer_Student(5144,\"李晓红\ i=System.in.read(); } }

答:运行结果为:I am 李晓红 my number is 5144 婚否=false

15、class Sum

{

int n; float f() {

float sum=0;

for(int i=1;i<=n;i++) sum=sum+i; return sum; }

}

- 27 -

class Average extends Sum {

int n; float f() {

float c; super.n=n; c=super.f(); return c/n; }

float g() {

float c;

c=super.f(); return c/2;

} }

public class Class1 {

public static void main (String[] args) throws java.io.IOException {

Average aver=new Average(); aver.n=100;

float result_1=aver.f(); float result_2=aver.g();

System.out.println(\"result_1=\"+result_1); System.out.println(\"result_2=\"+result_2); int i;

i=System.in.read();

} }

答:运行结果为:result_1=50.50 result_2=2525.0

16、

class Student {

- 28 -

float math,english,sum; float f(float k1,float k2) {

sum=k1*math+k2*english; return sum; } }

public class Average {

Student wanghong,lihong;

public static void main(String args[]) {

wanghong=new Student(); lihong=new Student(); wanghong.math=60.0f; wanghong.english=80f; lihong.math=70.0f; lihong.english=90.0f;

wanghong.sum=wanghong.f(2.0f,2.0f); lihong.sum=lihong.f(2.0f,2.0f);

System.out.println(\"lihong sum=\"+lihong.sum);

System.out.println(\"wanghong sum=\"+wanghong.sum); } }

答:运行结果为:lihong sum=320.0 wanghong sum=280.0

17、

import java.awt.*; class Chengji {

float f(float x,float y) {

return x*y; } }

class Xiangjia extends Chengji {

- 29 -

//重写父类的f方法

float f(float x,float y) {

return x+y; } }

public class Class1 {

Xiangjia sum;

public static void main(String args[]) {

sum=new Xiangjia();

System.out.println(\"sum=\"+sum.f(4,6));

//此处对象sum是调用自已的方法f,得到两数的和. } }

答:运行结果为:sum=10.0

18、

public class Class1 {

float a[];

public static void main(String args[]) {

a=new float[5]; a[0]=23.9f; a[1]=34.9f; a[2]=45f; a[3]=56.98f; a[4]=100f;

System.out.println (\"a[0]=\"+a[0]); System.out.println (\"a[1]=\"+a[1]); System.out.println (\"a[2]=\"+a[2]); System.out.println (\"a[3]=\"+a[3]); System.out.println (\"a[4]=\"+a[4]); } }

- 30 -

答:运行结果为: a[0]=23.9 a[1]=34.9 a[2]=45.0 a[3]=56.98 a[4]=100.0

19、

public class Class1 {

String tom=\"I am a good cat\"; int x,y,z;

public static void main(String args[]) {

x=tom.indexOf(\"a\");

y=tom.indexOf(\"good\ z=tom.indexOf(\"a\ g.setColor(Color.red);

System.out.println(\" \"+x+\":\"+y+\":\"+z); } }

答:运行结果为:2:7:13

20、

public class Class1 {

String jerry=\"I love Tom\

public static void main(String args[]) {

s1=jerry.substring(2); s2=jerry.substring(2,5); g.setColor(Color.blue); System.out.println (s1); System.out.println (s2);

System.out.println (jerry.substring(jerry.indexOf(\"love\"))); } }

答:运行结果为:love Tom

- 31 -

lov

love Tom

21、

import java.util.*; import java.awt.*; public class Class1 {

public static void main (String[] args) throws java.io.IOException {

String s1=\"I am Geng.X.Y,she is my girlfriend\"; String s2=\"Lowood?what is that?\";

StringTokenizer fenxi_1=new StringTokenizer(s1,\" ,\");//空格和逗号做分隔符

StringTokenizer fenxi_2=new StringTokenizer(s2,\" ?\");//空格和问号做分隔符

int n1=fenxi_1.countTokens(); int n2=fenxi_2.countTokens(); while(fenxi_1.hasMoreTokens()) {

String s=fenxi_1.nextToken(); System.out.print(s+‚ ‛); }

System.out.println();

System.out.println(\"s1有单词:\"+n1+\"个\"); while(fenxi_2.hasMoreTokens()) {

String s=fenxi_2.nextToken(); System.out.print(s+‚ ‛); }

System.out.println();

System.out.println(\"s2有单词:\"+n2+\"个\"); int i;

i=System.in.read(); } }

答:运行结果为:I am Geng.X.Y she is my girlfriend s1有单词:7个

- 32 -

Lowood what is that S2有单词:4个

- 33 -

五、程序填空,使之满足要完成的功能

1、下面的小程序中,有一个在文本框,在其内输入完字符并按回车键后,文本框内就会显示‚欢迎您‛的字符串,填空完成该功能。 import java.applet.*; import java.awt.*;

import java.awt.event.*;

public class Applet1 extends Applet implements ____________________ {

TextField text; public void init()

{

text=new TextField(20); add(text);

text.________________________________; //此处填写事件监听 }

public void _______________________________//此处填写事件处理方法 {

if(e.getSource()==text)

__________________________________; } }

答:ActionListener

addActionListener(this)

actionPerformed(ActionEvent e) text.setText(‚欢迎您‛)

2、下面的小程序中,有两个文本区,当在第一个文本区中输入文本时,第二个文本区会与第一个文本区同步显示相同的内容。 import java.awt.*; import java.applet.*; import java.awt.event.*;

public class Applet1 extends______________ implements____________ {

TextArea text1,text2; public void init() {

text1=new TextArea(\" \

- 34 -

text2=new TextArea(\" \ add(text1); add(text2);

______________________________;//此处填加事件监听 }

public void ______________________________//接口中的方法 {

if(e.getSource()==text1) {

text2.setText(text1.getText()); } } }

答:Applet

TextListener

text1.addTextListener(this); textValueChanged(TextEvent e)

3、用BordereLayout布局实现下图的效果,其中‚东‛和‚西‛两个是按钮,‚上北‛和‚下南‛是标签,中间是一个文本区域。

答:程序如下

import java.applet.*; import java.awt.*;

public class Applet1 extends Applet {

Button button1,button2; Label label1,label2; TextArea text;

public void init()

- 35 -

{

setLayout(____________________); text=new TextArea(\" \ button1=new Button(\"东\"); button2=new Button(\"西\"); label1=new Label(\"上北\"); label2=new Label(\"下南\");

add(label1,\"North\");add(label2,____________); add(button1,\"East\");add(button2,____________); add(__________,\"Center\"); } }

答:new BorderLayout()

\"South\" \"West\" text

4、下面是计算并输出1+1/2+1/3+1/4+……+1/20的值的程序

public class Class1 {

public static void main (String[] args) {

double sum=0; int i=1;

while(i<=_______) {

sum=sum+________; i=_________; }

System.out.println(\"sum=\"+__________); try {

System.in.read(); }

catch(Exception e){} } }

- 36 -

答:20 1.0/i i+1 sum

六、编程序完成下列各题

1、写一个矩形类,能计算矩形的面积和周长。创建一个该类的对象,计算并输出其面积和周长。 答:程序如下: class 矩形 {

double 长,宽;

矩形(double a,double b) {

长=a; 宽=b; }

double 计算面积() {

return 长*宽; }

double 计算周长() {

return (长+宽)*2; } }

public class Class1 {

public static void main (String[] args) {

矩形 rect=new 矩形(5,3);

System.out.println(\"矩形的面积:\"+rect.计算面积()); System.out.println(\"矩形的周长:\"+rect.计算周长()); try {

System.in.read(); }catch(Exception e){} } }

2、写一个圆类,能计算圆的面积和周长。创建一个该类的对象,计算并输出其面积和周长。 答:程序如下: class 圆 {

double 半径; 圆(double r)

- 37 -

}

public class Class1 {

public static void main (String[] args) {

圆 circle=new 圆(10);

System.out.println(\"圆的面积:\"+circle.计算面积()); System.out.println(\"圆的周长:\"+circle.计算周长()); try {

System.in.read(); }catch(Exception e){} } }

3、写一个梯形类,能计算梯形的面积。创建一个该类的对象,计算并输出其面积。

class 梯形 {

double 上底,下底,高;

梯形(double x,double y,double h) {

上底=x; 下底=y; 高=h; }

double 计算面积() {

- 38 -

{

半径=r; }

double 计算面积() {

return 3.14*半径*半径; }

double 计算周长() {

return 3.14*2*半径; }

return (上底+下底)*高/2.0; } }

public class Class1 {

public static void main (String[] args) {

梯形 lader=new 梯形(3.0,10.0,20);

System.out.println(\"lader的面积:\"+lader.计算面积()); try {

System.in.read(); }catch(Exception e){} } }

4、写一个三角形类,能计算三角形的面积和周长。创建一个该类的对象,计算并输出其面积和周长。 答:程序如下: class 三角形 {

double a,b,c;

三角形(double a,double b,double c) {

this.a=a; this.b=b; this.c=c; }

double 计算面积()

{

double p=(a+b+c)/2.0;

return(Math.sqrt(p*(p-a)*(p-b)*(p-c))); }

double 计算周长()

{

return(a+b+c); } }

public class Class1 {

- 39 -

public static void main (String[] args) {

三角形 tra=new 三角形(3,4,5);

System.out.println(\"三角形的面积是:\"+tra.计算面积()); System.out.println(\"三角形的周长是:\"+tra.计算周长()); try {

System.in.read(); }catch(Exception e){} } }

5、编一程序,有3个文本框,在第一个文本框中输入一个圆的半径并回车之后,第二个文本框将显示这个圆的周长,第三个文本框显示这个圆的面积。

答:程序如下 import java.awt.*;

import java.awt.event.*;

class MyFrame extends Frame implements ActionListener {

TextField text1,text2,text3; MyFrame() {

text1=new TextField(10); text2=new TextField(10); text3=new TextField(10); add(text1); add(text2); add(text3);

text1.addActionListener(this); setBounds(100,100,400,200); setVisible(true); }

public void actionPerformed(ActionEvent e) {

double r,c,s;

if(e.getSource()==text1) {

r=Double.valueOf(text1.getText()).doubleValue(); c=2*r*3.14159; s=3.14159*r*r;

- 40 -

text2.setText(\"圆的周长是:\"+c); text3.setText(\"圆的面积是:\"+s); } } }

public class Class1 {

public static void main (String[] args) {

new MyFrame(); } }

5、编一程序,有3个文本框,在第一个文本框中输入一个整数并回车之后,第二个文本框将显示这个数的平方值,第三个文本框显示这个数的立方值。

答:程序如下 import java.awt.*;

import java.awt.event.*;

class F1 extends Frame implements ActionListener {

TextField text1,text2,text3; F1() {

text1=new TextField(10); text2=new TextField(10); text3=new TextField(10); add(text1); add(text2); add(text3);

text1.addActionListener(this); setBounds(100,100,400,200); setVisible(true); }

public void actionPerformed(ActionEvent e) {

long n1,n2,n3;

if(e.getSource()==text1) {

n1=Long.parseLong(text1.getText()); n2=n1*n1; n3=n1*n1*n1;

- 41 -

text2.setText(n1+\" 的平方是:\"+n2); text3.setText(n1+\" 的立方是:\"+n3); } } }

public class Class1 {

public static void main (String[] args) {

new F1(); } }

6、有两个文本区,在第一个文本区中输入若干个数时,另一个文本区同时对输入的数从小到大排序。也就是说随着输入的变化,另一个文本区不断地更新排序。

答:程序如下

import java.util.*; //因使用字符分析器,所以使用该包 import java.awt.*;

import java.awt.event.*;

class F2 extends Frame implements TextListener {

TextArea text1,text2; F2() {

text1=new TextArea(\" \ text2=new TextArea(\" \ add(text1); add(text2);

text2.setEditable(false); text1.addTextListener(this); setBounds(100,100,400,200); setVisible(true); }

public void textValueChanged(TextEvent e) {

if(e.getSource()==text1) {

String s=text1.getText(); double a[]=new double[50];

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

- 42 -

//用空格逗号和回车做分隔符

int n=fenxi.countTokens(); for(int i=0;i<=n-1;i++) {

String temp=fenxi.nextToken();

a[i]=Double.valueOf(temp).doubleValue(); }

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

for(int j=i+1;j<=n-1;j++) {

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

double t=a[j];a[j]=a[i];a[i]=t; } } }

text2.setText(null);

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

text2.append(\" \"+a[i]+\ } } }

public class Class1 {

public static void main (String[] args) {

new F2(); } }

7、设计4个按钮,分别命名为‚加‛、‚减‛、‚乘‛、‚除‛,3个文本框,当在前两个文本框输入操作数并按某一按钮后,第三个文本框就会显示相应的运算结果。

import java.awt.*;

import java.awt.event.*;

class F3 extends Frame implements ActionListener {

TextField text1,text2,text3;

Button button1,button2,button3,button4;

- 43 -

F3() {

text1=new TextField(10); text2=new TextField(10); text3=new TextField(10); add(text1); add(text2); add(text3);

button1=new Button(\"加\"); button2=new Button(\"减\"); button3=new Button(\"乘\"); button4=new Button(\"除\"); add(button1); add(button2); add(button3); add(button4);

button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); }

{

double n,n1,n2;

n1=Double.valueOf(text1.getText()).doubleValue();

n2=Double.valueOf(text2.getText()).doubleValue(); if(e.getSource()==button1) {

n=n1+n2;

text3.setText(String.valueOf(n)); }

else if(e.getSource()==button2) {

n=n1-n2;

text3.setText(String.valueOf(n)); }

else if(e.getSource()==button3)

- 44 -

setBounds(100,100,400,200); setVisible(true); public void actionPerformed(ActionEvent e)

{

n=n1*n2;

text3.setText(String.valueOf(n)); } else {

n=n1/n2;

text3.setText(String.valueOf(n)); } } }

public class Class1 {

public static void main (String[] args) {

new F3(); } }

8、设计两个文本区和一个‚确定‛按钮,当在第一个文本区输入文本时,第二个文本区也会显示相同的文本;当点击按钮时,在第二个文本区内会显示‚我按了确定按钮‛

import java.awt.*;

import java.awt.event.*;

class F4 extends Frame implements TextListener,ActionListener { TextArea text1,text2;Button button; F4()

{ text1=new TextArea(\" \ text2=new TextArea(\" \ button=new Button(\"确定\");

add(text1);add(text2);add(button); text1.addTextListener(this); button.addActionListener(this); setBounds(100,100,400,200); setVisible(true); }

public void textValueChanged(TextEvent e) { if(e.getSource()==text1)

{ text2.setText(text1.getText()); }

- 45 -

}

public void actionPerformed(ActionEvent e) { if (e.getSource()==button)

text2.setText(\"我按了确定按钮\"); } }

public class Class1 {

public static void main (String[] args) {

new F4(); } }

9、下图是一程序的运行结果,请编程序完成。

import java.awt.*;

class Mypanel1 extends Panel {

Checkbox box1,box2,box3; Mypanel1() {

box1=new Checkbox(\"音乐\"); box2=new Checkbox(\"体育\"); box3=new Checkbox(\"吹牛\");

add(box1);add(box2);add(box3); } }

class Mypanel2 extends Panel {

Checkbox box1,box2,box3;

- 46 -

Mypanel2() {

box1=new Checkbox(\"读书\"); box2=new Checkbox(\"电脑\"); box3=new Checkbox(\"电影\");

add(box1);add(box2);add(box3); } }

class F5 extends Frame {

Mypanel1 panel1; Mypanel2 panel2; F5() {

setLayout(new GridLayout(2,2)); panel1=new Mypanel1(); panel2=new Mypanel2();

add(panel1);add(new Label());add(new Label());add(panel2); setBounds(100,100,400,200); setVisible(true); } }

public class Class1 {

public static void main (String[] args) {

new F5(); } }

10、如下图所示,当单击‚开南窗‛按钮时,出现名字为‚阳光窗口‛;当单击‚开北窗‛按钮时,出现名字为‚冰雪之窗‛的窗口;当单击‚关南窗‛或‚关北窗‛按钮时,相应窗口就关闭。

- 47 -

答:程序如下 import java.awt.*;

import java.awt.event.*;

class Yourwindow extends Frame {

Yourwindow(String s,int a,int b) {

super(s);

setLayout(new GridLayout(1,1)); setSize(a,b);

setBackground(Color.white); setVisible(false); validate(); } }

class F6 extends Frame implements ActionListener {

Yourwindow window1,window2;

Button button1,button2,button3,button4; F6() {

button1=new Button(\"开南窗\"); button2=new Button(\"开北窗\"); button3=new Button(\"关南窗\"); button4=new Button(\"关北窗\");

window1=new Yourwindow(\"阳光之窗\ window2=new Yourwindow(\"冰雪之窗\ button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this);

- 48 -

button4.addActionListener(this);

add(button1);add(button2);add(button3);add(button4); setBounds(100,100,400,200); setVisible(true); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==button1) {

window1.setVisible(true); }

else if(e.getSource()==button3) {

window1.setVisible(false); }

else if(e.getSource()==button2) {

window2.setVisible(true); }

else if(e.getSource()==button4) {

window2.setVisible(false); } } }

public class Class1 {

public static void main (String[] args) {

new F6(); } }

11、在显示区域上有一个文本域、一个面板和由三个单选按钮组成的按钮组,每个单选按钮对应的标识为‚中国队‛,‚韩国队‛,‚日本队‛并放入面板中。当选择相应的单选按钮时。在文本域中会显示出相应的‚选中了XX队‛。编写程序代码完成上述要求,布局由自己定。 答:程序如下 import java.awt.*;

import java.awt.event.*;

- 49 -

class F7 extends Frame implements ItemListener {

Label label1;

TextField text1; Panel p;

CheckboxGroup checkboxgroup1; Checkbox radio1; Checkbox radio2; Checkbox radio3; F7() {

Label label1= new Label(\"请选择参赛队:\"); text1=new TextField(40); p=new Panel();

checkboxgroup1=new CheckboxGroup();

radio1=new Checkbox(\"中国队\ radio2=new Checkbox(\"韩国队\ radio3=new Checkbox(\"日本队\ radio1.addItemListener(this);

radio2.addItemListener(this); radio3.addItemListener(this); p.add(radio1); p.add(radio2); p.add(radio3); add(label1); add(p);

add(text1);

setBounds(100,100,400,200); setVisible(true); }

public void itemStateChanged(ItemEvent e) {

if (e.getItemSelectable()==radio1) {

text1.setText(\"选中了中国队\"); }

else if (e.getItemSelectable()==radio2) {

text1.setText(\"选中了韩国队\");

- 50 -

}

else if (e.getItemSelectable()==radio3) {

text1.setText(\"选中了日本队\"); } } }

public class Class1 {

public static void main (String[] args) {

new F7(); } }

12、下图是有两个选择控件和两个文本区域并采用GridLayout布局的程序运行的效果图。其中左端的选择控件有‚音乐天地‛、‚武术天地‛、‚象棋乐园‛、‚交友聊天‛四项,当按上述顺序选中其一时,在左端的文本框会相应地显示‚小提琴曲:梁祝‛、‚少林寺:少林拳‛、‚和为贵‛、‚知心朋友‛。右端的选择控件有‚辽宁日报‛、‚北京日报‛、‚上海日报‛、‚足球晚报‛四项,当按上述顺序选中其一时,在右端的文本框会相应地显示‚信息很好‛、‚每天六版‛、‚很难看到‛、‚球迷的天地‛。

答:程序如下 import java.awt.*;

import java.awt.event.*;

class F8 extends Frame implements ItemListener {

Choice choice1,choice2; TextField text1,text2;

- 51 -

F8() {

setLayout(new GridLayout(2,2));

choice1=new Choice();choice2=new Choice();

text1=new TextField(10);text2=new TextField(10); choice1.add(\"音乐天地\");choice1.add(\"武术天地\"); choice1.add(\"象棋乐园\");choice1.add(\"交友聊天\"); choice2.add(\"辽宁日报\");choice2.add(\"北京日报\"); choice2.add(\"上海日报\");choice2.add(\"足球晚报\"); add(choice1);add(choice2); add(text1);add(text2);

choice1.addItemListener(this); choice2.addItemListener(this); }

public void itemStateChanged(ItemEvent e) {

if(e.getItemSelectable()==choice1) {

if(choice1.getSelectedIndex()==0) {

text1.setText(\"小提琴曲:梁祝\"); }

else if(choice1.getSelectedIndex()==1) {

text1.setText(\"少林寺:少林拳\"); }

else if(choice1.getSelectedIndex()==2) {

text1.setText(\"和为贵\"); }

else if(choice1.getSelectedIndex()==3) {

text1.setText(\"知心朋友\"); } }

else if(e.getItemSelectable()==choice2)

- 52 -

setBounds(100,100,400,200); setVisible(true);

if(choice2.getSelectedIndex()==0) {

text2.setText(\"信息很好\"); }

else if(choice2.getSelectedIndex()==1) {

text2.setText(\"每天六版\"); }

else if(choice2.getSelectedIndex()==2) {

text2.setText(\"很难看到\"); }

else if(choice2.getSelectedIndex()==3) {

text2.setText(\"球迷的天地\"); } } }

public class Class1 {

public static void main (String[] args) {

new F8(); } }

13、下图是一个窗口,在窗口中有菜单和一个文本区域,其中‚文件‛菜单有‚新建‛、‚保存‛、‚打印‛三个菜单项;‚编辑‛菜单有‚复制‛、‚全选‛、‚粘贴‛三个菜单项,编写程序,当选中某个菜单项时,能在文本区域内显示相应菜单项的标识,例如,选中‚新建‛菜单项时,在文本区中就显示‚新建‛。

- 53 -

答:程序如下 import java.awt.*;

import java.awt.event.*;

class Menuwindow extends Frame implements ActionListener {

MenuBar menubar; Menu menu1,menu2;

MenuItem item1,item2,item3,item4,item5,item6; TextArea text;

Menuwindow(String s,int a,int b) {

super(s);

menubar=new MenuBar(); menu1=new Menu(\"文件\"); menu2=new Menu(\"编辑\");

item1=new MenuItem(\"新建\"); item2=new MenuItem(\"保存\"); item3=new MenuItem(\"打印\"); item4=new MenuItem(\"复制\"); item5=new MenuItem(\"全选\"); item6=new MenuItem(\"粘贴\"); text=new TextArea();

setLayout(new GridLayout(1,1)); setSize(a,b);

setBackground(Color.white); setVisible(false);

setBounds(100,100,300,200);

- 54 -

menu1.add(item1);menu1.add(item2);menu1.add(item3); menu2.add(item4);menu2.add(item5);menu2.add(item6); menubar.add(menu1);menubar.add(menu2); setMenuBar(menubar); add(text); pack();

item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==item1)

{text.setText(item1.getLabel());} else if(e.getSource()==item2)

{text.setText(item2.getLabel());} else if(e.getSource()==item3)

{text.setText(item3.getLabel());} else if(e.getSource()==item4)

{text.setText(item4.getLabel());} else if(e.getSource()==item5)

{text.setText(item5.getLabel());} else if(e.getSource()==item6)

{text.setText(item6.getLabel());} } }

class F9 extends Frame implements ActionListener {

Menuwindow window;

Button button1,button2; F9() {

button1=new Button(\"打开窗\"); button2=new Button(\"关闭窗\");

window=new Menuwindow(\"家园\ button1.addActionListener(this);

- 55 -

button2.addActionListener(this); add(button1);add(button2); setVisible(true);

setBounds(50,50,500,400); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==button1) {

window.setVisible(true); }

else if(e.getSource()==button2) {

window.setVisible(false); } } }

public class Class1 {

public static void main (String[] args) {

new F9(); } }

14、在一个窗口中带有两个对话框:保存文件对话框和打开文件对话框。窗口还有一个菜单,当选择菜单中的‚打开文件‛选项时,出现打开文件对话框;选择菜单中的‚保存文件‛选项时,出现保存文件对话框。编程序完成上述要求。

答:程序如下 import java.awt.*;

import java.awt.event.*; public class Class1

{public static void main(String args[])

{ Frame_FileDialog f=new Frame_FileDialog();} }

class Frame_FileDialog extends Frame implements ActionListener { FileDialog filedialog_save,filedialog_load; MenuBar menubar; Menu menu;

MenuItem item1,item2;

- 56 -

Frame_FileDialog()

{ super(\"带文件对话框的窗口\"); setSize(60,70); setVisible(true);

menubar=new MenuBar(); menu=new Menu(\"文件\");

item1=new MenuItem(\"保存文件\"); item2=new MenuItem(\"打开文件\"); item1.addActionListener(this); item2.addActionListener(this); menu.add(item1); menu.add(item2); menubar.add(menu); setMenuBar(menubar);

filedialog_save=new FileDialog(this,\"保存文件\

filedialog_save.setVisible(false);

filedialog_load=new FileDialog(this,\"打开文件\

filedialog_load.setVisible(false);

filedialog_save.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e)

{filedialog_save.setVisible(false);} });

filedialog_load.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e)

{filedialog_load.setVisible(false);} });

addWindowListener(new WindowAdapter()

{public void windowClosing(WindowEvent e) {setVisible(false);System.exit(0);} }); }

public void actionPerformed(ActionEvent e) { if(e.getSource()==item1)

{ filedialog_save.setVisible(true); }

else if(e.getSource()==item2)

{ filedialog_load.setVisible(true);

对话框对话框- 57 -

} } }

15、在小程序中有一个文本框,它负责记录鼠标事件。当鼠标进入小程序时,文本框中显示‚鼠标进来了,位臵是XX‛,其中XX是鼠标当前的坐标;当鼠标离开小程序时,文本框中显示‚鼠标走开了‛;当鼠标按下时,文本框显示‚鼠标按下了,位臵是XX‛,其中XX是鼠标当前的坐标。编程完成上述要求。

答:程序如下: import java.applet.*; import java.awt.*;

import java.awt.event.*;

public class Applet1 extends Applet implements MouseListener { TextField text; public void init()

{ text=new TextField(40);

add(text);

addMouseListener(this); }

public void mousePressed(MouseEvent e)

{ text.setText(\"鼠标键按下了,位臵是\"+e.getX()+\ }

public void mouseReleased(MouseEvent e)

{ text.setText(\"鼠标松开了,位臵是\"+e.getX()+\ }

public void mouseEntered(MouseEvent e)

{ text.setText(\"鼠标进来了,位臵是\"+e.getX()+\ }

public void mouseExited(MouseEvent e) { text.setText(\"鼠标走开了\"); }

public void mouseClicked(MouseEvent e) { if(e.getClickCount()==2)

{ text.setText(\"鼠标键双击,位臵:\"+e.getX()+\ }

else {} } }

- 58 -

16、编一小程序,当鼠标移动或拖动时,会在文本框中显示出鼠标当前的坐标。

答:程序如下

import java.applet.*; import java.awt.*;

import java.awt.event.*;

public class Applet1 extends Applet implements MouseMotionListener { TextField text; public void init()

{ text=new TextField();

setLayout(new BorderLayout()); setBackground(Color.green); addMouseMotionListener(this);

add(text,\"South\"); }

public void mouseDragged(MouseEvent e) { text.setBackground(Color.red);

text.setText(\"鼠标的坐标(拖动):\"+\"(\"+e.getX()+\ }

public void mouseMoved(MouseEvent e) { text.setBackground(Color.yellow);

text.setText(\"鼠标的坐标(移动):\"+\"(\"+e.getX()+\ } }

17、编程序,将10个int整型数写入到一个名字为tom.dat的文件中,然后按相反的顺序读出这些数据并显示。

答:程序如下 import java.io.*; public class Class1 {

public static void main(String args[]) {

RandomAccessFile in_and_out=null; int data[]={1,2,3,4,5,6,7,8,9,10}; try {

in_and_out=new RandomAccessFile(\"tom2.txt\ }

catch(IOException e){}

- 59 -

try {

for(int i=0;iin_and_out.writeInt(data[i]); }

for(int i=data.length-1;i>=0;i--)

{

in_and_out.seek(i*4);

System.out.print(\ }

in_and_out.close(); }

catch(Exception e){} try {

System.in.read(); }

catch(Exception e2){} } }

18、编程序,显示程序自已的源代码。

答:程序如下 import java.io.*; class Class1

{ public static void main(String args[]) throws java.io.IOException { try{ RandomAccessFile RandomAccessFile(\"e20_10.java\ long filePoint=0;

long fileLength=file.length();

while(filePointfilePoint=file.getFilePointer(); }

file.close();

int i=System.in.read(); }

file=new

- 60 -

catch(Exception e) {} } }

19、小程序中有选择控件,选择项有‚清华大学‛、‚大连理工‛、‚yahoo‛、‚263‛四项,当选择其中某一项时,就进入该项的网页。

清华大学的网址是:http://www.tsinghua.edu.cn

大连理工的网址是:http://www.dlut.edu.cn yahoo的网址是:http://www.yahoo.com 263的网址是:http://freemail.263.net 编程序完成上述要求。

答:程序如下 import java.applet.*; import java.awt.*;

import java.awt.event.*; import java.net.*;

public class Applet1 extends Applet implements ItemListener { Choice choice1;TextField text1,text2; URL url1,url2,url3,url4; String s1,s2,s3,s4; public void init()

{ setLayout(new GridLayout(2,2)); choice1=new Choice(); text1=new TextField(10); text2=new TextField(10); choice1.add(\"清华大学\"); choice1.add(\"大连理工\"); choice1.add(\"yahoo\"); choice1.add(\"263\"); add(choice1);

add(new Label(\"选择一个网址\")); add(text1); add(text2);

choice1.addItemListener(this); s1=\"http://www.tsinghua.edu.cn\"; s2=\"http://www.dlut.edu.cn\"; s3=\"http://www.yahoo.com.cn\"; s4=\"http://freemail.263.net\";

- 61 -

}

public void itemStateChanged(ItemEvent e) { if(e.getItemSelectable()==choice1) { if(choice1.getSelectedIndex()==0) { try {

url1=new URL(s1); }

catch(MalformedURLException g)

{ System.out.println(\"不正确的RUL\"+url1); }

text1.setText(\"清华大学\");

getAppletContext().showDocument(url1); }

else if(choice1.getSelectedIndex()==1) { try{ url2=new URL(s2);

}

catch(MalformedURLException g)

{ System.out.println(\"不正确的RUL\"+url2); }

text1.setText(\"大连理工\");

getAppletContext().showDocument(url2); }

if(choice1.getSelectedIndex()==2) { try{ url3=new URL(s3); }

catch(MalformedURLException g)

{ System.out.println(\"不正确的RUL\"+url3); }

text1.setText(\"yahoo\");

getAppletContext().showDocument(url3); }

if(choice1.getSelectedIndex()==3) { try{ url4=new URL(s4); }

catch(MalformedURLException g)

{ System.out.println(\"不正确的RUL\"+url4);

- 62 -

}

text1.setText(\"263\");

getAppletContext().showDocument(url4); } }

else {} } }

20、编写播放音乐的程序,在小程序中有三个按钮,分别是‚开始播放‛、‚循环播放‛和‚停止播放‛,用于控制音乐家的播放(音乐文件名为 1.au ,并与小程序在同一文件夹中)。

答:程序如下 import java.applet.*; import java.awt.*;

import java.awt.event.*;

public class Applet1 extends Applet implements ActionListener {

AudioClip clip;

Button button_play,button_loop,button_stop; public void init() {

clip=getAudioClip(getCodeBase(),\"1.au\"); button_play=new Button(\"开始播放\"); button_loop=new Button(\"循环播放\"); button_stop=new Button(\"停止播放\"); button_play.addActionListener(this); button_loop.addActionListener(this); button_stop.addActionListener(this); add(button_play); add(button_loop); add(button_stop); }

public void stop() {

clip.stop(); }

public void actionPerformed(ActionEvent e) {

- 63 -

if(e.getSource()==button_play) {

clip.play(); }

else if(e.getSource()==button_loop) {

clip.loop(); }

if(e.getSource()==button_stop) {

clip.stop(); } } }

21、编一带滚动字幕的词典的小程序(如图所示),当用户在一个文本框中输入英文单词回车时,另一个文本框显示汉语解释。程序中的一个线程对象负责滚动地显示‚欢迎使用本字典‛。用户通过在文本框中输入moon单词,来杀死这个线程,即让线程结束run方法,进入死亡状态。

答:程序如下

import java.applet.*; import java.awt.*;

import java.awt.event.*;

public class Applet1 extends Applet implements ActionListener,Runnable {

TextField text1,text2;

- 64 -

boolean boo; int x=0;

Thread Scrollwords=null; public void init() {

text1=new TextField(10); text2=new TextField(10);

Scrollwords=new Thread(this); add(text1); add(text2);

text1.addActionListener(this); }

public void start() {

boo=false; try {

Scrollwords.start(); }

catch(Exception ee){}

public void run() {

while(true) {

x=x+5; if(x>200) x=0; repaint(); try {

Scrollwords.sleep(80); }

catch(InterruptedException e){} if(boo) {

return; //结束run方法,导致线程一死亡 }

- 65 -

}

} }

public void paint(Graphics g) {

g.setColor(Color.red);

g.setFont(new Font(\"隶书\ g.drawString(\"欢迎使用本字典\ }

public void actionPerformed(ActionEvent e) {

if(text1.getText().equals(\"boy\")) {

text2.setText(\"男孩\"); }

else if(text1.getText().equals(\"moon\")) {

boo=true; } else {

text2.setText(\"没有该单词\"); } } }

22、编一小程序,在主线程中创建了两个线程:1eft和right,其中一个负责画圆,另一个负责画方,两个图形要‚同时‛从左到右滑动(如下图所示)。

- 66 -

答:程序如下 import java.applet.*; import java.awt.*;

import java.awt.event.*;

public class Applet1 extends Applet implements Runnable {

Thread left,right; Graphics mypen; int x,y;

public void init() {

left=new Thread(this); right=new Thread(this); x=10; y=10;

mypen=getGraphics(); }

public void start() {

left.start(); right.start(); }

- 67 -

public void run() {

while(true) {

if(Thread.currentThread()==left) {

x=x+1; if(x>240) x=10;

mypen.setColor(Color.blue);

mypen.clearRect(10,10,300,100); mypen.drawRect(10+x,10,50,50); try {

left.sleep(60); }

catch(InterruptedException e) {} }

else if(Thread.currentThread()==right) {

y=y+1; if(y>240) y=10;

mypen.setColor(Color.red);

mypen.clearRect(10,110,300,100); mypen.drawOval(10+y,110,50,50); try {

left.sleep(60); }

catch(InterruptedException e){} } } }

public void stop() {

left=null; right=null; }

- 68 -

}

23、利用字符输入输出流(FileReader类和FileWriter类)读写文件,将‚我们正在学习面向对象的程序设计‛加密后存入F盘的8000的文件夹中,文件名为‛secret.txt‛。之后再读取该文件的内容并解密,将解密后的明文显示出来。 答:程序如下: import java.io.*; import java.awt.*;

import java.awt.event.*; class Class1 {

public static void main(String args[]) {

char a[]=\"我们正在学习面向对象的程序设计\".toCharArray(); int n=0,m=0; try {

File f=new File(\"f:\\\\8000\ for(int i=0;ia[i]=(char)(a[i]^'R'); }

FileWriter out=new FileWriter(f); out.write(a,0,a.length); out.close();

FileReader in=new FileReader(f); int length=(int)f.length(); m=length;

char tom[]=new char[length];

while((n=in.read(tom,0,length))!=-1) {

String s=new String(tom,0,n); //m=n;

System.out.println(\"密文:\\n\"+s); }

in.close();

for(int i=0;itom[i]=(char)(tom[i]^'R');

- 69 -

}

String 明文=new String(tom,0,m);

System.out.println(\"明文:\\n\"+明文); }

catch(IOException e) {

System.out.println(\"File read Error\"); } try {

System.in.read(); }

catch(Exception e){} } }

24、设有数据源是redsun,没有设臵login name和password,该数据源连接到Access数据库student.mdb,该数据库中有一个数据表:chengjibiao,如下图所示。其中,学号、姓名字段为String类型,出生日期为Date类型,数学、物理、化学为Int型。编程序,查询数据库student.mdb中chengjibiao表里包含全部字段值的记录。

答:程序如下: import java.sql.*; class Class1 {

public static void main(String args[]) {

Connection con; Statement sql; ResultSet rs; try

- 70 -

{

//建立桥接器

Class.forName(\"com.ms.jdbc.odbc.JdbcOdbcDriver\"); }

catch(ClassNotFoundException e) {

System.out.println(\"wrong\"); } try {

//连接到数据库

con=DriverManager.getConnection(\"jdbc:odbc:redsun\ //向数据库发送SQL语句

sql=con.createStatement();

//将查询结果存于ResultSet类的一个对象rs中

rs=sql.executeQuery(\"SELECT *FROM chengjibiao\"); while(rs.next()) {

String number=rs.getString(1); String name=rs.getString(2); Date date=rs.getDate(3); int math=rs.getInt(\"数学\"); int physics=rs.getInt(\"物理\"); int english=rs.getInt(\"英语\"); System.out.print(\"学号:\"+number); System.out.print(\" 姓名:\"+name); System.out.print(\" 出生:\"+date); System.out.print(\" 数学:\"+math); System.out.print(\" 物理:\"+physics); System.out.println(\" 英语:\"+english); }

con.close(); }

catch(SQLException e1){} try {

System.in.read(); }

catch(Exception e2){}

- 71 -

} }

25、设有数据源是redsun,没有设臵login name和password,该数据源连接到Access数据库student.mdb,该数据库中有一个数据表:chengjibiao,如下图所示。其中,学号、姓名字段为String类型,出生日期为Date类型,数学、物理、化学为Int型。编程序,查询数据库student.mdb中chengjibiao表里英语字段大于80的记录,只显示姓名和英语字段。

答:程序如下: import java.sql.*; class Class1 {

public static void main(String args[]) {

Connection con; Statement sql; ResultSet rs; try {

Class.forName(\"com.ms.jdbc.odbc.JdbcOdbcDriver\"); }

catch(ClassNotFoundException e) {

System.out.println(\"wrong\"); } try {

con=DriverManager.getConnection(\"jdbc:odbc:redsun\ //向数据库发送SQL语句

sql=con.createStatement();

//将查询结果存于ResultSet类的一个对象rs中

- 72 -

rs=sql.executeQuery(\"SELECT 学号,姓名,英语 FROM chengjibiao WHERE 英语>=80\");

while(rs.next()) {

String name=rs.getString(2); //字符字段的第2个字段

int english=rs.getInt(3); //整数字段的第3个字段,实际是第6个字段

System.out.print(\" 姓名:\"+name);

System.out.println(\" }

con.close(); }

catch(SQLException e1){} try {

System.in.read(); }

catch(Exception e2){} } }

英语:\"+english); - 73 -

因篇幅问题不能全部显示,请点此查看更多更全内容