第一篇:Java程序设计课堂练习题课案(共)
《Java程序设计》练习题
《Java程序设计》练习题
第一章 Java编程基础
一、选择题
1、可以使用【
】实用程序编译Java程序。A.java B.javac C.javadoc D.cmd
2、可以使用【
】实用程序运行java应用程序。A.java B.javac C.javadoc D.cmd
3、可以使用【
】实用程序从Java源文件代码中抽取Java文档注释,生成相应的HTML帮助文档。
A.java B.javac C.javadoc D.cmd
4、Java编译单元(源程序文件)的扩展名为【
】 A..java B..class C..doc D..exe
5、编译Java源程序文件产生的字节码文件的扩展名为【
】 A..java B..class C..html D..exe
6、以下Java应用程序执行入口main方法的声明中,正确的是【
】 A、public static void main()B、public static void main(String[] args)C、public static int main(String[] args)D、public void main(String[] args)
7、Java属于以下哪种语言?【
】
A.机器语言 B.汇编语言 C.高级语言 D.以上都不对
8、下面哪种类型的文件可以在Java虚拟机中运行?【
】 A..java B..jre C..exe D..classs
9、Java程序中声明包的关键字是【
】
A、java
B、package C、javadoc
D、cmd
10、如果JDK的安装路径为“d:jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?【
】
A、d:jdk; B、d:jdkbin; C、d:jrebin; D、d:jre;
11、下列说法中,不正确的是【
】。
A、一个Java源文件编译通过后,得到的结果文件数也只有一个 B、一个Java源文件经过编译后,得到的文件的扩展名一定是.class C、一个Java源文件只能有一个public类定义,其类名与源文件名相同 D、一个Java源文件可以包含多个类
《Java程序设计》练习题
12、安装好JDK后,在其bin目录下有许多exe可执行文件,其中“java.exe”命令的作用是以下哪一种?【
】。A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器
13、以下关于变量的说法错误的是【
】 A.变量名必须是一个有效的标识符 B.变量在定义时可以没有初始值
C.变量一旦被定义,在程序中的任何位置都可以被访问
D.在程序中,可以将一个byte类型的值赋给一个int型类型的变量,不需要特殊声明
14、假设int x=2,三元表达式x>0?x+1:5的运行结果是以下哪一个?【
】 A.0 B.2 C.3 D.5
15、下面的运算符中,用于执行除法运算的是哪个?【
】 A./ B. C.% D.*
16、下面哪种写法可以实现访问数组arr的首个元素?【
】 A.arr[0] B.arr(0)C.arr[1] D.arr(1)
17、以下哪个选项可以正确创建一个长度为3的二维数组?【
】 A.new int[2][3] B.new int[3][] C.new int[ ][3] D.以上答案都不对
18、关于变量的作用域,下列说法错误的是【
】 A.类成员变量的作用域为类定义体 B.方法参数的作用域为方法体
C.对于for语句中定义的变量,当for语句执行完时,该变量就消亡了 D.在方法void f(int i)的for语句块中,可以声明变量“int i;”
19、Java字符类型采用的是Unicode编码方案,每个Unicode码占用的位数是【
】。
A.8
B.16 C.32 D.64 20、下列赋值语句中,不合法的是【
】。A.float f=1.2 B.float f2=1.2f C.double d=1.2 D.double d2=1.2f
二、填空题
1、Java的三个技术平台分别是_java se___、__java ee__、__javame__。
2、Java程序的运行环境简称之为_jre___。
3、编译Java程序需要使用__javac__命令。
《Java程序设计》练习题
4、_____path____环境变量用来存储Java的编译和运行工具所在路径,而___classpath__环境变量则用来保存Java虚拟机要运行的“.class”文件路径。
5、在Java语言中,main()方法的参数是表示命令行参数的String数组,其中,__args[0]__表示第一个参数。
6、Java应用程序的入口方法是_____main()__,用于控制程序的开始和结束。
7、Java系统运行时,通过__自顶垃圾收集___机制周期性地释放无用对象所使用的内存,完成对象的清除。
8、Java中的程序代码都必须在一个类中定义,类使用_class__关键字来定义。
9、布尔常量即布尔类型的两个值,分别是__true__和__false___。
10、Java中的注释可分为三种类型,分别是__单行___、___多行____、____文档___。
三、判断题
1、Java语言采用面向对象的思想编程,具有跨平台、分布式、多线程等优点。
2、Java语言的语法与C或C++类似,也支持面向过程的程序设计技术。
3、Java提供了自动垃圾收集机制进行内存管理,减小了内存出错的可能性。
4、Java语言的平台无关性使得Java程序可以跨平台运行。
5、Java虚拟机是实现Java语言平台无关性的基础。
四、简答题
1、简述JRE与JDK的区别。
JRE,它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。
它包含编译工具、解释工具、文档制作工具、打包工具等多种与开发相关的工具,是提供给Java开发人员使用的。初学者学习和使用Java语言时,首先必须下载和安装JDK。JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。
2、什么是方法重载?
方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。
第二章 面向对象思想
一、选择题
1、类的定义必须包含在以下哪种符号之间?【
】
A.方括号[] B.花括号{} C.双引号“” D.圆括号()
《Java程序设计》练习题
2、在以下什么情况下,构造方法会被调用?【
】 A.类定义时 B.创建对象时 C.调用对象方法时 D.使用对象的变量时
3、在类的继承关系中,需要遵循以下哪个继承原则?【
】 A.多重 B.单一 C.双重 D.不能继承
4、在Java语言中,以下哪个关键字用于在方法上声明抛出异常【
】 A、try B、catch C、throws D、throw
5、关于super关键字以下说法哪些是不正确的【
】。A.super关键字可以调用父类的构造方法 B.super关键字可以调用父类的普通方法
C.super与this不能同时存在于同一个构造方法中 D.super与this可以同时存在于同一个构造方法中
6、类中的一个成员方法被下面哪个修饰符修饰时,该方法只能在本类被访问?【
】。
A.public B.protected C.private D.default
7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?【
】 A、inherits B、implements C、extends D、modifies
8、System类位于以下哪个包中?【
】。
A、java.io B、java.util C、java.awt D、java.lang
9、以下关于继承的说法,正确的是【
】。A.继承可以避免代码复制和相关的代码维护等问题 B.Java语言中一个子类可以继承多个基类(多重继承)C.Java语言不允许实现多个接口
D.子类可以继承父类的方法,但不能重新改写父类的方法
10、下列修饰符中,不能用来修饰类的是【
】。A.public B.abstract C.final D.static
二、填空题
1、面向对象的三大特征是__封装___、___继承___和____多态___。
2、在Java中,可以使用关键字__new___来创建类的实例对象。
3、定义在类中的变量被称为__成员变量_____,定义在方法中的变量被称为__局部变量___。
4、在非静态成员方法中,可以使用关键字_this_访问类的其他非静态成员。
5、被static关键字修饰的成员变量被称为__静态变量____,它可以被该类所有的实例对象共享。
《Java程序设计》练习题
6、在一个类中,除了可以定义属性、方法,还可以定义类,这样的类被称为__内部类___。
7、在Java语言中,允许使用已存在的类作为基础创建新的类,这种技术称为___继承__。
8、一个类如果实现一个接口,那么它就需要实现接口中定义的全部_方法_,否则该类就必须定义成____抽象类__。
9、在程序开发中,要想将一个包中的类导入到当前程序中,可以使用_import_关键字。
10、一个类可以从其他的类派生出来,派生出来的类称为__子类__,用于派生的类称为__父类__或者_基类__。
三、判断题
1、在定义一个类的时候,如果类的成员被private所修饰,该成员不能在类的外部被直接访问。
2、Java中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。
3、声明构造方法时,不能使用private关键字修饰。
4、类中static修饰的变量或方法,可以使用类名或对象的引用变量访问。
5、方法内部类中不能访问外部类的成员变量。
四、简答题
1、构造方法和普通的成员方法有什么区别?
2、抽象类和接口的区别是什么?
3、什么叫多态?
1.构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。
2.在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。
接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。
3.多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。
《Java程序设计》练习题
第三章 多线程
一、选择题
1、Thread类位于下列哪个包中?【
】
A.java.io B.java.lang C.java.util D.java.awt
2、线程调用sleep()方法后,该线程将进入以下哪种状态?【
】 A.就绪状态 B.运行状态 C.阻塞状态 D.死亡状态
3、在以下哪种情况下,线程进入就绪状态?【
】。A.线程调用了sleep()方法时 B.线程调用了join()方法 C.线程调用了yield()方法时 D.线程调用了notify()方法
4、对于通过实现Runnable接口创建线程,下面说法不正确的是【
】。A、适合多个相同程序代码的线程去处理同一个资源的情况
B、把线程同程序代码、数据有效的分离,很好地体现了面向对象的设计思想 C、可以避免由于Java的单继承带来的局限性 D、编写简单,可以不通过Thread类直接创建线程
5、对于死锁的描述,下面四种说法不正确的是【
】。A.当两个线程互相等待对方释放同步锁时会发生死锁 B.Java虚拟机没有检测和处理死锁的措施 C.一旦出现死锁,程序会发生异常
D.处于死锁状态的线程处于阻塞状态,无法继续运行
6、下面四个选项中,不是线程进入阻塞状态的原因是【
】。A.线程试图获取某个对象的同步锁,而该锁被其他线程持有 B.线程调用了另一个线程的join()方法 C.线程调用了一个阻塞式的IO方法 D.线程调用了setDaemon(boolean b)方法
7、要创建一个线程类,可通过继承【
】类。A、Object B、Thread C、Runnable D、Task
8、通过实现【
】接口,可创建一个线程类 A、Object B、Thread C、Runnable D、Task
9、通过重写继承的方法【
】,可实现线程要执行的逻辑操作。A.start()B.main()C.run()D.execute()
10、通过调用线程对象实例的【
】方法,可以启动执行该线程。A.start()B.main()C.run()D.execute()
二、填空题
1、一个应用程序中有多条并发执行的线索,每条线索都被称作一个__线程_,它
《Java程序设计》练习题
们会交替执行,彼此间可以进行__通信__。
2、在实现多线程的程序时有两种方式,一是通过继承__thread_类,二是通过实现__runnable___接口。
3、yield()方法只能让相同优先级或者更高优先级、处于__就绪_状态的线程获得运行的机会。
4、在Java语言中,同步方法需要用到关键字__synchronized___,对于同步方法而言无须指定同步锁,它的同步锁是方法所在的_对象__,也就是_this__(关键字)。
5、在Thread类中,start()方法用于开启一个_新线程___,当线程启动后,系统会自动调用___run()__方法。
三、判断题
1、当创建一个线程对象时,该对象表示的线程就立即开始运行。
2、如果前台线程全部死亡,后台线程也会自动死亡。
3、同步代码块中的锁对象可以是任意类型的对象。
4、静态方法不能使用synchronized关键字来修饰。
5、线程结束等待或者阻塞状态后,会进入运行状态。
四、简答题
1、在Java中创建线程有几种方式?
2、sleep()和wait()有什么区别?
五、分析题
1、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。class RunHandler{
} public class Test{
} public static void main(String[] args){
} Thread t=new Thread(new RunHandler());t.start();public void run(){ } System.out.println(“run”);
《Java程序设计》练习题
2、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。public class A extends Thread{
}
3、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。public class Test{
}
六、设计题
1、声明线程类TalkThread,循环打印线程名称10次(表示10次发言机会);创建测试类,创建3个对象(表示3个发言人)并启动线程,观察输出结果(3个发言人的发言顺序)。
第四章 Java API
一、选择题 private Object obj=new Object();public synchronized void a(){
} public static void main(String[] args){ } new Test().a();try{
} obj.wait();System.out.println(“waiting”);System.out.println(“Exception”);protected void run(){ } public static void main(String[] args){
} A a=new A();a.start();System.out.println(“this is run()”);}catch(InterruptedException e){
《Java程序设计》练习题
1、先阅读下面的程序片段 String str=“abccdefcdh” String[] arr=str.split(“c”);System.out.println(arr.length);程序执行后,打印的结果是几?【
】 A.2 B.3 C.4 D.5
2、以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个【
】。A.ciel()B.floor()C.abs()D.random()
3、Random对象能够生成以下哪种类型的随机数?【
】。A.int B.String C.double D.A和C
4、String s=“abcdedcba”;则s.subString(3,4)返回的字符串是以下选项中的哪个?【
】。
A、cd B、de C、d D、e
5、假如indexOf()方法未能找到所指定的子字符串,则返回以下选项中的哪个?【
】。
A.false B.0 C.-1 D.以上答案都不对
6、以下Math类的方法中,-4.4通过哪个方法运算后,结果为-5.0【
】。A.round()B.min()C.floor()D.ceil()
7、已知int i=(int)(Math.random()*100),则i不可能为【
】。A.0 B.1 C.99 D.100
8、已知String str=“abc计算机123”,则str.length()的值为【
】。A.9 B.10 C.12 D.18
9、已知String a=“Hello”,String b=a.subString(0,2),则b=【
】。A.Hello B.He C.Hel D.null
10、下列方法中,【
】不是StringBuffer类的成员方法 A.compareTo()B.indexOf C.append D.charAt()
二、填空题
1、在Java中定义了两个类来封装对字符串的操作,它们分别是___________和_________________。
2、Java中操作日期的类有____________、_____________、_______________。
3、Math类中用于计算所传递参数平方根的方法是_______________。
4、Java中专门用于将日期格式化为字符串的类是________________。
5、Java中用于产生随机数的类是_____________,它位于_____________包中。
6、String类中用于返回字符串字符个数的方法是________________。
《Java程序设计》练习题
三、判断题
1、String对象和StringBuffer对象都是字符串变量,创建后都可以修改。
2、用运算符==比较字符串对象时,如果两个字符串的值相同,结果为true。
3、Ssytem类中的currentTimeMillis()方法返回一个long类型的值。
4、Date、Calendar以及DateFormat类都位于java.util包中。
5、String类的方法replace(CharSequence str1, CharSequence str2)返回一个新的字符串,它是通过用str2替换此字符串中出现的所有str1得到的。
四、简答题
1、String和StringBuffer有什么区别?
2、Date和Calendar类有什么区别和联系?
第五章 集合类
一、选择题
1、Java语言中,集合类都位于哪个包中?【 】
A.java.util B.java.lang C.java.array D.java.collections
2、使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法?【 】 A.next()B.hash()C.hasPrevious D.hasNext()
3、在程序开发中,经常会使用以下哪个类来存储程序中所需的配置?【 】 A.HashMap B.TreeSet C.Properties D.TreeMap
4、要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个集合?【 】
A.LinkedList B.ArrayList C.HashSet D.TreeSet
5、以下哪个方法不是LinkedList集合中定义的?【 】
A.getLast()B.getFirst()C.remove(int index)D.next()
6、获取单列集合中元素的个数可以使用以下哪个方法?
A.length()B.size()C.get(int index)D.add(Object obj)
7、下列集合类型中,不允许集合中存在重复项的是【 】 A.Collection B.List C.Set D.Queue
8、下列关于List接口的说法,错误的是【 】 A.继承Collection接口 B.不允许重复项 C.支持遍历 D.可以使用访问索引
9、下列关于Set接口的说法,错误的是【 】 A.继承Collection接口 B.不允许重复项 C.支持遍历 D.可以使用访问索引
《Java程序设计》练习题
10、下列关于Collections类的静态方法binarySerach()的说法,错误的是【 】
A.使用二分搜索法搜索指定列表 B.如果没有找到,则返回负值 C.查找前列表必须先排序
D.如果有多个相同元素,则返回第一个的索引
二、填空题
1、JDK中提供了一系列可以存储任意对象的类,统称为____________
2、在创建TreeSet对象时,可以传入自定义的比较器,自定义比较器需要实现_______________接口。
3、使用Iterator遍历集合时,首先需要调用______________方法判断是否存在下一个元素,若存在下一个元素,则调用_____________方法取出该元素。
4、使用Iterator遍历集合时,首先需要调用______________方法判断是否存在下一个元素,若存在下一个元素,则调用_____________方法取出该元素。
5、集合按照存储结构的不同可分为单列集合和双列集合,单列集合的根接口是________________,双列集合的根接口是___________。
6、Map集合中的元素都是成对出现的,并且都是以__________、_________的映射关系存在。
7、Iterator有一个子类,不仅可以对集合进行从前向右遍历,还可以从后向前遍历,该类是______________。
8、List集合的主要实现类有__________、__________,Set集合的主要实现类有__________、__________,Map集合的主要实现类有__________、_________。
9、Map集合中存在元素需要调用____________方法,要想根据该集合的键获取对应的值需要调用___________方法。
10、java.util包中提供了一个专门用来操作集合的工具类,这个类是________,还提供了一个专门用于操作数组的工具类,这个类是____________。
三、判断题
1.Set集合是通过键值对的方式来存储对象的。
2.集合中不能存放基本数据类型,而只能存放引用数据类型。
3.如果创建的TreeSet集合中没有传入比较器,则该集合中存入的元素需要实现Comparable接口。
4.使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素。5.LinkedList在内部维护了一个双向循环链表,每一个元素节点都包含前一个元素节点和后一个元素节点的引用。
《Java程序设计》练习题
四、简答题
1、集合中的List、Set、Map有什么区别?
2、请说说Collection和Collections有什么区别?
五、分析题
1、分析下面的程序,然后写出程序的运行结果: import java.util.*;public class Exp0719 {
}
2、分析下面的程序,然后写出程序的运行结果: import java.util.*;public class Exp0720 {
public static void main(String[] args){
TreeMap tm = new TreeMap();tm.put(“1”, “Jack”);tm.put(“2”, “Rose”);tm.put(“3”, “Lucy”);Set keySet = tm.keySet();Iterator it = keySet.iterator();while(it.hasNext()){ Object key = it.next();Object value = tm.get(key);public static void main(String[] args){
} Map map = new LinkedHashMap();map.put(“1”, “Jack”);map.put(“2”, “Rose”);map.put(“3”, “Lucy”);Set keySet = map.keySet();Iterator it = keySet.iterator();while(it.hasNext()){
} Object key = it.next();Object value = map.get(key);System.out.println(key + “:” + value);
《Java程序设计》练习题
}
} } System.out.println(key + “:” + value);
六、设计题
1、已知学生类s6_Stud4,成员变量有no(学号,int)、name(姓名,String)、chinese(语文成绩,int)和math(数学成绩,int)。编程,要求按总成绩降序排列,若总成绩相同,按语文成绩降序排列,并编制简单的测试类。
第六章 Java IO(输入输出)
一、选择题
1、以下选项中,哪个是FileOutputStream的父类【
】
A.File B.FileOutput C.OutputStream D.InputStream
2、File类中以字符串形式返回文件绝对路径的方法是 【
】 A.getParent()B.getName()C.getAbsolutePath()D.getPath()
3、以下哪个不是InputStream类的方法?【
】 A.int read(byte[])B.void flush()C.DataOutputStream D.available
4、以下选项中,哪个流中使用了缓冲区技术?【
】 A.BufferedOutputStream B.FileInputStream C.DataOutputStream D.FileReader
5、以下选项中,哪个是File类delete()方法返回值的类型?【
】 A.boolean B.int C.String D.Integer
6、以下选项中,哪个文件操作类可以实现一次读入多个文件?【
】。A、FileReader
B、BufferedReader C、FileInputStream
D、SequenceInputStream
7、以下对File类的public boolean isFile()方法的描述,哪个是正确的【
】。A、判断该File对象所对应的是否是文件 B、判断该File对象所对应的是否是目录 C、返回文件的最后修改时间 D、在当前目录下生成指定的目录
8、以下哪个包和Java.nio包共同提供了用于输入/输出流和文件操作的各种类型【
】。
《Java程序设计》练习题
A、java.lang
B、java.util C、java.io
D、java.text
9、BufferedReader的父类是【
】。
A、Reader
B、FileReader
C、PipedReader
D、InputStreamReader
10、要确定磁盘分区的容量和可用空闲空间等信息,可以使用的类是【
】。A、Drive B、Directory C、File D、FileOutputStream
二、填空题
1、Java中的IO流,按照传输数据不同,可分为____________和__________。
2、在Java中,__________类用于操作磁盘中的文件和目录,位于___________包中。
3、在Java中,______________________类用来把两个或更多的InputStream输入流对象合并为单个InputStream输入流对象使用。
4、Java中提供了一个类____________________,它不但具有读写文件的功能,并且可以随机地从文件的任何位置开始执行读写数据的操作。
5、在Java中,能实现线程间通信的流是_____________。
6、InputStreamReader类是用于将____________流转换为____________。
三、判断题
1、如果一个File表示目录下有文件或者子目录,调用delete()方法也可以将其删除。
2、装饰设计模式中,装饰对象应该包含一个被装饰对象的引用。
3、使用ObjectInputStream与ObjectOutputStream类来读取或存储的对象必须要实现Serializable接口,否则程序将出现NotSerializableException异常。
4、InputStream类的close()方法是用于关闭流并且释放流所占的系统资源。
5、一般来说,把字符转换成计算机识别的字节序列称为解码,而把字节序列转换为普通人能看懂的明文字符称为编码。
四、简答题
1、Java流被分为字节流、字符流两大流类,两者有什么区别?
六、设计题
1、创建新的文本文件myFile.txt,从控制台输入内容并写入源文件中,然后读取并显示myFile.txt内容。
2、在指定的文本文件中查找指定的关键字,并打印包含结果的行。文本文件和关键字均由命令行参数指定。
第七章 GUI(图形用户界面)
《Java程序设计》练习题
一、选择题
1、下面四个组件中哪一个不是Component的子类?【
】 A.Button B.Dialog C.Label D.MenuBar
2、每个GUI程序中必须包含一个什么组件【
】 A.按钮 B.标签 C.菜单 D.容器
3、当鼠标按键被释放时,会调用以下哪个事件处理器方法?【
】 A.mouseReleased()B.mouseUp()C.mouseOff D.mouseLetGo
4、ActionEvent的对象会被传递给以下哪个事件处理器方法?【
】 A.addChangeListener()B.addActionListener()C.stateChanged()D.actionPerformed()
5、下面哪个不是FlowLayout类中表示对齐方式的常量?【
】 A.FlowLayout.LEFT B.FlowLayout.CENTER C.FlowLayout.VERTICAL D.FlowLayout.RIGHT
6、下面对Swing的描述,不正确的是【
】。A、Swing是在AWT基础上构建的一套新的图形界面系统 B、Swing提供了AWT所能够提供的所有功能 C、Swing组件是用Java代码来实现的 D、Swing组件都是重量级组件
7、下面四对AWT和Swing对应组件中,错误的是【
】。A、Button和JButton B、Dialog和JDialog C、MenuBar和JMenuBar D、ComboBox和JComboBox
8、使用下面哪个组件可以接收用户的输入信息【
】。
A、JButton
B、JLabel C、JTextField
D、以上都可以
9、JFrame的默认布局管理器为【
】。
A、BorderLayout
B、FlowLayout
C、BoxLayout
GridLayout
10、Japplet的默认布局管理器为【
】。
A、BorderLayout
B、FlowLayout
C、BoxLayout
GridLayout
11、Jpanel的默认布局管理器为【
】
A、BorderLayout
B、FlowLayout
C、BoxLayout
GridLayout
12、将组件垂直摆放在一列或水平摆放在一行中的布局管理器是【
】15
D、D、D、《Java程序设计》练习题
A、BorderLayout
B、FlowLayout
C、BoxLayout
D、GridLayout
13、下列事件中,不属于低级事件【
】。
A.KeyEvent B.MouseEvent C.Windowevent D.ActionEvent
14、在类中若要处理ActionEvent事件,则该类需要实现的接口是【
】 A.Action B.Runnable C.Serializable D.ActionListener
15、下列关于事件的说法中,不正确的是【
】 A.一个组件可以引发多种事件 B.一个组件可以注册多个事件监听器 C.一个监听器只能监听一个组件 D.一个监听器可以监听处理多种事件
二、填空题
1、在Java中,图形用户界面简称__________,它的组件包含在___________和____________这两个包中。
2、为了避免实现监听器中定义的所有方法,造成代码的臃肿,在JDK中提供了一些__________类,这些类实现了接口所有的方法,但是方法中没有任何代码,属于一种空实现。
3、在Java中,____________类相当于一个抽象的画笔对象,使用它可以在组件上绘制图形。
4、_____________负责监听事件源上发生的事件,并对各种事件做出响应处理。
5、在部分的Swing组件都是_____________类的直接或者间接子类,其名称都是在原来AWT组件名称前加上字母J。
三、判断题
1、容器(Container)是一个可以包含基本组件和其他容器的组件。
2、可以通过实现ActionListener接口或者继承ActionAdapter类来实现动作事件监听器。
3、CardLayout布局管理器将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的。
4、非模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口进行交互。
5、JFrame的默认布局管理器是FlowLayout。
四、简答题
1、简述AWT和Swing的区别。
六、设计题
《Java程序设计》练习题
1、使用JLabel、JTextField、JButton控件实现摄氏温度和华氏温度的转换。运行结果如图所示:
(a)摄氏转华氏
2、编程,在程序中建立一个窗口,其中包含两个文本框和一个按钮,单击按钮,能将一个文本框中的内容复制到另一个文本框中,程序运行结果如图所示:
(b)华氏转摄氏
第八章 网络编程
一、选择题
1、使用UDP协议通信时,需要使用哪个类把要发送的数据打包?【
】 A.Socket B.DatagramSocket C.DatagramPacket D.ServerSocket
2、以下哪个是serverSocket类用于接收来自客户端请求的方法?【
】 A.accept()B.getOutputStream()C.receive()D.get()
3、以下说法不正确的是【
】
A.TCP连接中必须要明确客户端与服务器端
B.TCP协议是面向连接的通信协议,它提供了两台计算机之间可靠无差错的数据传输
C.UDP协议是面向无连接的协议,可以保证数据的完整性
D.UDP协议消耗资源小,通信效率高,通常被用于音频、视频和普通数据的传输
4、以下哪个类用于实现TCP通信的客户端程序?【
】 A.ServerSocket B.Socket C.Client D.Server
《Java程序设计》练习题
5、进行UDP通信时,在接收端若要获得发送端的IP地址,可以使用DatagramPacket的哪个方法?【
】
A.getAddress()B.getPort()C.getName()D.getData()
6、以下哪个方法是DatagramSocket类用于发送数据的方法?【
】 A.receive()B.accept()C.set()D.send()
7、在程序运行时,DatagramSocket的哪个方法会发生阻塞?【
】 A.send()B.receive()C.close()D.connect()
8、TCP协议的“三次握手”中,第一次握手指的是什么?【
】 A.客户端再次向服务器端发送确认信息,确认连接
B.服务器端向客户端回送一个响应,通知客户端收到了连接请求 C.客户端向服务器端发出连接请求,等待服务器确认 D.以上答案全部错误
9、TCP/IP系统中的端口号是一个多少位的数字?【
】 A.8 B.16 C.32 D.64
10、要获取URL对象的端口号,可调用其成员方法是【
】
A.getHost()B.getProtocol()C.getPort()D.getRef()
二、填空题
1、TCP协议的特点是_______________,即在传输数据前先在___________和____________建立逻辑连接。
2、在计算机中,端口是用__________字节,也就是16位的二进制数表示,它的取值范围是_________________。
3、TCP/IP协议被分为四个层:分别是__________、___________、_________、______________。
4、在JDK中,IP地址用________________类表示,该类提供了许多和IP地址相关的操作。
5、使用UDP协议开发网络程序时,需要使用两个类,分别是_______________、__________________。
6、URL一般由3部分组成:______________、主机地址和资源路径。
7、Socket(套接字)由一个IP地址和____________唯一确定。
8、可以通过Socket对象的成员方法______________获取其对应的输入流。
9、可以通过Socket对象的成员方法______________获取其对应的输出流。
10、Java类库java.net包中实现数据报套接字的类是_______________。
三、判断题
1、由于UDP是面向连接的协议,可以保证数据的完整性,因此在传输重要数据
《Java程序设计》练习题
时建议使用UDP协议。
2、在网络通信中,对数据传输格式、传输速率、传输步骤等作了统一规定,只有通信双方共同遵守这个规定才能完成数据的交互,这种规定称为网络传输协议。
3、在创建发送端的DatagramPacket对象时,需要指定发送端的目标IP地址和端口号。
4、IPv4版本的IP地址使用4个字节来表示,IPv6版本的IP地址使用8个字节来表示。
5、使用TCP协议通信时,通信的两端以IO的方式进行数据的交互。
四、简答题
1、TCP协议和UDP协议有什么区别?
2、Socket类和ServerSocket类各有什么作用?
第九章 数据库及其它
一、选择题
1、下列数据库产品中,哪个为适合于个人用户的桌面DBMS【
】 A.Oracle B.Microsoft SQL Server C.IBM DB2 D.Microsoft Access
2、Microsoft SQL Server的数据库模型属于【
】
A.层次模型 B.网状模型 C.关系模型 D.面向对象的数据模型
3、要删除数据库表,可以使用的SQL命令是【
】
A.DELETE TABLE B.REMOVE TABLE C.ERASE TABLE D.DROP TABLE
4、在Java编程语言中,JDBC是指【
】
A.Java类编译程序 B.访问关系数据库的编程接口标准 C.Java类库名称 D.与浏览器交互的一种机制
二、填空题
1、每个数据表中通常都有一个____________,用于唯一确定一条记录。
2、JDBC的相关类都位于_______________包中。
3、通常可以采用Class类的______________静态方法显示地加载一个驱动程序类。
4、使用DriverManager类的_______________静态方法实现与URL所指定的数据源建立连接并返回一个Connection类的对象。
5、_______________________对象是对应于预编译SQL语句的Statement。
6、ResultSet对象具有指向其当前数据行的游标,使用_____________方法可以
《Java程序设计》练习题
将游标移动到下一行。
三、判断题
1、一个数据表中可以设定多个主关键字。
2、重复执行相同结构的SQL语句时,Statement比PreparedStatement具有更高的效率。
3、executeQuery()方法获得的结果集ResultSet对象的游标默认指向第一行数据。
4、默认的ResultSet对象不可更新,仅有一个向前移动的光标。
第二篇:java程序设计简明教程--上机练习题参考答案
《java程序设计简明教程》上机练习题参考答案
目 录
上机练习题1..................................................3 1.用循环语句分别打印九九乘法表......................................................................................................................3 2.定义两个数组......................................................................................................................................................4 3.编写一个简单的考试程序..................................................................................................................................4 上机练习题2..................................................6 1.编写程序,包括一个文本域和三个命令按钮...................................................................................................6 2.编写程序,包括一个文本框、一个密码框和两个按钮...................................................................................7 3.编写程序,建立一个带有菜单的窗体..............................................................................................................8 4.编写程序,将窗口尺寸设置为不可更改,并处理窗口事件...........................................................................9 5.编写程序,用列表框列出一些选项,设置一个按钮.....................................................................................10 6.编写程序,用标签显示一道简单测试题,答案使用单选按钮列出.............................................................11 上机练习题3.................................................13 1.编写Application在窗口内画54个不同颜色的小圆......................................................................................13 2.编制Applet程序,使用Graphics类中的各种图形绘制方法........................................................................14 3.编制Applet程序,以百叶窗效果显示图像....................................................................................................14 4.编制Applet程序,实现12个钢琴键及其声音的模拟..................................................................................17 上机练习题4.................................................18 1.假设在addressbook数据库表中,存在多个姓氏相同的人,根据这一情况,建立相应的查询功能.......18 2.编写一个应用程序,使其可以从一个数据库的某个表中查询一个列的所有信息.....................................20 3.设计一个数据库应用程序,功能是在学生数据库的成绩表中加入某门课程的所有学生的成绩.............23 上机练习题5.................................................26 1.编写GUI程序,制作一个文本文件阅读器....................................................................................................26
Java程序设计简明教程
2.编制程序,计算表达式“2*4*6+8*10*12+……+26*28*30”的值,并把结果输出到文件中....................27 3.编制程序............................................................................................................................................................28 4.编写程序,实现压缩、解压缩Zip文件.........................................................................................................29 5.编写程序,从试题文件中抽取Java单选题进行测试练习............................................................................32 上机练习题6.................................................34 1.编制程序,求如下表达式的值........................................................................................................................34 2.用继承Thread类的方法实现一个多线程程序...............................................................................................35 3.编制程序,同时显示两个时区的时钟,并将时钟的结果显示在Fram窗体中...........................................37 4.使用异常处理机制和输入/输出处理机制编写一个程序................................................................................41 上机练习题7.................................................42 1.编制Applet程序,使用Graphics类的常用方法,绘制一面五星红旗........................................................42 2.编制Applet程序,实现一行文字的动画显示,即文字跑马灯....................................................................42 3.编制Applet程序,实现图片的水中倒影........................................................................................................44 4.结合图形用户界面与事件处理,创建一个日历GUI程序............................................................................46 上机练习题8.................................................48 1.设计Java Applet程序,实现在图片上飘雪花的特效....................................................................................48 2.设计一个通讯录,保存读者信息....................................................................................................................50 3.构造一个程序,它在一个窗口描绘出一个小鸟的图标.................................................................................54
上机练习题参考答案
上机练习题1 1.用循环语句分别打印如图1-24所示的九九乘法表。【参考程序】
//文件XiTi1_1_1_1.java package XiTi;import java.io.*;import java.lang.*;public class XiTi1_1_1{ public static void main(String args[]){ String str=“ ”;int i,j;for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ str=i+“*”+j+“=”+i*j;if(i
//文件XiTi1_1_3.java package XiTi;import java.io.*;import java.lang.*;public class XiTi1_1_3{ public static void main(String args[]){ String str=” “;3
Java程序设计简明教程
int i,j;for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ str=i+”*“+j+”=“+i*j;System.out.print(str.length()==5?str+” “:str+” “);} System.out.println(”“);} } } 2.定义两个数组,首先将第一个数组中的元素复制到第二个数组中,然后将第二个数数组进行从大到小的排序,最后将两个数组中的对应元素进行比较,试统计两个数组中对应位置上相同元素的个数。
【参考程序】
//文件XiTi1_2.java package XiTi;import java.io.*;import java.lang.*;public class XiTi1_2{ public static void main(String[] args){ int a[]={278,109,063,930,589,184,505,269,8,83};int b[]=new int[10];int t,cnt=0;for(int i=0;i<10;i++)b[i]=a[i];for(int i=1;i<10;i++)for(int j=0;j<10-i;j++)if(b[j]
System.out.println(”“);System.out.println(”********************* b **********************“);System.out.println(”“);for(int i=0;i<10;i++)System.out.print(b[i]+” “);System.out.println(”“);System.out.println(”“);System.out.println(”对应元素相同的个数为:“+cnt);System.out.println(”“);} } 3.编写一个简单的考试程序。【参考程序】
上机练习题参考答案
//文件XiTi1_3.java package XiTi;import java.io.*;import java.util.Date;public class XiTi1_3{ public static void main(String[] args){ String yes=”Y“,ok=”“;int x,x1,y,opr=2,s,h,m,t1,t2;String op,str=”“,re=”“,a=”A“;do{ x=new Long(Math.round(Math.random()*99+1)).intValue();y=new Long(Math.round(Math.random()*99+1)).intValue();opr=new Long(Math.round(Math.random()*3+1)).intValue();s=new Date().getSeconds();h=new Date().getHours();m=new Date().getMinutes();t1=h*3600+m*60+s;switch(opr){ case 1: str=x+”+“+y+”=?“;re=Integer.toString(x+y);break;case 2: str=x+”-“+y+”=?“;re=Integer.toString(x-y);break;case 3: str=x+”*“+y+”=?“;re=Integer.toString(x*y);break;case 4: x1=Math.max(x,y);y=Math.min(x,y);x=x1;x=x-x%y;str=x+”/“+y+”=?“;re=Integer.toString(x/y);break;} System.out.print(str);try{ BufferedReader in =new BufferedReader(new InputStreamReader(System.in));ok=in.readLine();
}catch(IOException e){};s=new Date().getSeconds();h=new Date().getHours();m=new Date().getMinutes();t2=h*3600+m*60+s;if(ok.equals(re.trim()))System.out.println(”正确!用时:“+(t2-t1)+”秒“);else if(a.equals(ok.toUpperCase()))5
Java程序设计简明教程
System.out.println(”答案:“+re+”,请多努力!“);else System.out.println(”错误!答案:“+re);System.out.print(”继续吗(Y/N)?“);try{ BufferedReader in =new BufferedReader(new InputStreamReader(System.in));ok=in.readLine();
}catch(IOException e){};}while(yes.equals(ok.toUpperCase()));System.out.println(”“);} }
上机练习题2 1.编写程序,包括一个文本域和三个命令按钮,按钮标题分别为红色、黄色和蓝色,单击相应的按钮,将文本域的前景色设置为红色、黄色和蓝色。
【参考程序】
import javax.swing.*;import javax.swing.event.*;import java.awt.event.*;import java.awt.*;public class xiti2_1 extends JFrame implements ActionListener{ JButton red,yellow,blue;JTextArea ta=new JTextArea(5,20);xiti2_1(){ red=new JButton(”红色“);yellow=new JButton(”黄色“);blue=new JButton(”蓝色“);red.addActionListener(this);yellow.addActionListener(this);blue.addActionListener(this);JPanel jp=new JPanel();jp.setLayout(new FlowLayout(FlowLayout.CENTER));jp.add(red);jp.add(yellow);jp.add(blue);Container con=getContentPane();con.add(ta,BorderLayout.CENTER);con.add(jp,BorderLayout.SOUTH);setSize(300,200);setTitle(”上机练习题2_1“);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();} public void actionPerformed(ActionEvent e){ JButton btn=(JButton)e.getSource();if(btn==red){ ta.setForeground(Color.red);
上机练习题参考答案
} if(btn==yellow){ ta.setForeground(Color.yellow);} if(btn==blue){ ta.setForeground(Color.blue);} } public static void main(String args[]){ new xiti2_1();} } 2.编写程序,包括一个文本框、一个密码框和两个按钮。按钮标题分别为确定和取消,用户在密码框中输入密码,单击确定按钮,将在密码框中输入的字符显示在文本框中。
【参考程序】
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class xiti2_2 extends JFrame implements ActionListener{ JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JPanel p5=new JPanel();JTextField text=new JTextField(15);JPasswordField password=new JPasswordField(15);JButton ok=new JButton(”确定“);JButton cancel=new JButton(”取消“);xiti2_2(){ Container con=getContentPane();con.setLayout(new GridLayout(5,1));p2.add(new JLabel(”密码:“));p2.add(password);p3.add(new JLabel(”文本:“));p3.add(text);p4.add(ok);p4.add(cancel);ok.addActionListener(this);cancel.addActionListener(this);con.add(p1);con.add(p2);con.add(p3);con.add(p4);con.add(p5);setSize(300,200);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setTitle(”上机练习题2_2“);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==ok){ text.setText(password.getText());7
Java程序设计简明教程
} if(e.getSource()==cancel){ dispose();System.exit(0);} } public static void main(String args[]){ new xiti2_2();} } 3.编写程序,建立一个带有菜单的窗体。当用户选择“Color”或“Style”菜单的相关选项时,标签中文字的字体和颜色会发生相应的变化。
【参考程序】
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;class xiti2_3 extends JFrame implements ActionListener{ JMenuBar menubar=new JMenuBar();JTextArea ta=new JTextArea(”Hello Java!“);xiti2_3(){ setJMenuBar(menubar);JMenu menu,submenu;JMenuItem menuItem;menu=new JMenu(”Color“);menu.setMnemonic(KeyEvent.VK_C);menubar.add(menu);menuItem=new JMenuItem(”Yellow“);menuItem.setMnemonic(KeyEvent.VK_Y);menuItem.addActionListener(this);menu.add(menuItem);menuItem=new JMenuItem(”Orange“);menuItem.setMnemonic(KeyEvent.VK_O);menuItem.addActionListener(this);menu.add(menuItem);menuItem=new JMenuItem(”Pink“,KeyEvent.VK_P);menuItem.addActionListener(this);menu.add(menuItem);menuItem=new JMenuItem(”Blue“);menuItem.setMnemonic(KeyEvent.VK_B);menuItem.addActionListener(this);menu.add(menuItem);menu=new JMenu(”Style“);menu.setMnemonic(KeyEvent.VK_S);menubar.add(menu);menuItem=new JMenuItem(”Plain“);menuItem.setMnemonic(KeyEvent.VK_P);menuItem.addActionListener(this);menu.add(menuItem);menuItem=new JMenuItem(”Bold“);menuItem.setMnemonic(KeyEvent.VK_B);menuItem.addActionListener(this);8
上机练习题参考答案
menu.add(menuItem);menuItem=new JMenuItem(”Italic“);menuItem.setMnemonic(KeyEvent.VK_I);menuItem.addActionListener(this);menu.add(menuItem);menu=new JMenu(”Exit“);menu.setMnemonic(KeyEvent.VK_E);menubar.add(menu);menuItem=new JMenuItem(”Close Window“);menuItem.setMnemonic(KeyEvent.VK_W);menuItem.addActionListener(this);menu.add(menuItem);Container cp=getContentPane();cp.add(ta,BorderLayout.SOUTH);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setTitle(”菜单演示“);setSize(300,200);setVisible(true);} public void actionPerformed(ActionEvent e){ if(e.getActionCommand()==”Yellow“)ta.setForeground(Color.yellow);if(e.getActionCommand()==”Orange“)ta.setForeground(Color.orange);if(e.getActionCommand()==”Pink“)ta.setForeground(Color.pink);if(e.getActionCommand()==”Blue“)ta.setForeground(Color.blue);if(e.getActionCommand()==”Plain“)ta.setFont(new Font(”Dialog“,Font.PLAIN,24));if(e.getActionCommand()==”Bold“)ta.setFont(new Font(”Dialog“,Font.BOLD,24));if(e.getActionCommand()==”Italic“)ta.setFont(new Font(”Dialog“,Font.ITALIC,24));if(e.getActionCommand()==”Close Window“)System.exit(0);} public static void main(String args[]){ xiti2_3 menuexmple=new xiti2_3();} } 4.编写程序,将窗口尺寸设置为不可更改,并处理窗口事件,使得点击窗口关闭按钮时,会弹出对话框,提示用户是否确定要关闭窗口。
【参考程序】
import java.awt.event.*;import javax.swing.*;class MyFrame extends JFrame{ private JLabel label;public MyFrame(){ setTitle(”我的窗口“);label=new JLabel(”请点击关闭按钮!“,JLabel.CENTER);getContentPane().add(label);9
Java程序设计简明教程
//为窗口添加关闭事件
addWindowListener(new WindowCloseListener(this));//将点击窗口关闭按钮默认的关闭窗口功能去掉
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//设置窗口大小不可更改 setResizable(false);setSize(300,200);setVisible(true);} class WindowCloseListener extends WindowAdapter{ JFrame f;public WindowCloseListener(JFrame frame){ f=frame;//f是对话框的父窗口 } public void windowClosing(WindowEvent e){ int i=JOptionPane.showConfirmDialog(f,”确定要关“,”“,JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);if(i==JOptionPane.OK_OPTION){ System.exit(0);//点击确定退出程序 } } } public static void main(String[] args){ JFrame frame=new MyFrame();} }
闭窗口吗?5.编写程序,用列表框列出一些选项,设置一个按钮,点击按钮就会将所选的选项添加到另一个列表框中,其中第二个列表框中显示的已选项目可以删除。程序运行界面如图2-16所示。
【参考程序】
import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;class MyList extends JFrame { JPanel panel;JButton add,remove;DefaultListModel listModel1,listModel2;JList list1,list2;String[] s={”计算机科学与技术“,”计算机通信“,”应用电子“,”电子商务“,”会计电算化“,”法律“,”工商管理“,”生物技术“,”建筑工程技术“,”工业设计“,”商务英语“,”统计“};ArrayList array1,array2;public MyList(){ setTitle(”列表框“);add=new JButton(”>>“);add.addActionListener(new AddActionListener());//为按钮注册监听器 remove=new JButton(”<<“);remove.addActionListener(new RemoveActionListener());//为按钮注册监听器
listModel1=new DefaultListModel();//为列表1创建一个列表框模型 listModel2=new DefaultListModel();//为列表2创建一个列表框模型 for(int i=0;i 上机练习题参考答案 list1=new JList(listModel1);//通过列表框模型1创建列表框1 list2=new JList(listModel2);//通过列表框模型2创建列表框2 panel=new JPanel();panel.setLayout(new GridLayout(2,1));//面板用来放置按钮 panel.add(add);panel.add(remove);Container c=getContentPane();c.setLayout(new FlowLayout(FlowLayout.LEFT));c.add(list1);c.add(panel);c.add(list2);setSize(280,280);setVisible(true);} class AddActionListener implements ActionListener{ public void actionPerformed(ActionEvent e){ int id=-1;id=list1.getSelectedIndex();//得到列表框1中被选中的项 if(id>=0){ listModel2.addElement(listModel1.get(id));//向列表框2中添加所选项 listModel1.remove(id);//将列表框1中所选项删除 } } } class RemoveActionListener implements ActionListener{ public void actionPerformed(ActionEvent e){ int id=-1;id=list2.getSelectedIndex();//得到列表框2中被选中的项 if(id>=0){ listModel1.addElement(listModel2.get(id));//向列表框1中添加所选项 listModel2.remove(id);//将列表框2中所选项删除 } } } public static void main(String args[]){ new MyList();} } 6.编写程序,用标签显示一道简单测试题,答案使用单选按钮列出,用户选择答案后,会弹出对话框显示结果或说明。 【参考程序】 import javax.swing.*;import java.awt.*;import java.awt.event.*;class Question{ public JFrame frame;public JPanel panel;static JLabel label;public JRadioButton b1,b2,b3;static String question=”如果你意外地拿到一千元奖金,想去买一件很需要的大衣,但是钱不够;如果去买一双不急需要的运动鞋,则又多了数百元,你会怎么做?“;static String xx1=”自已添些钱把大衣买回来。“;11 Java程序设计简明教程 static String xx2=”买运动鞋再去买些其它的小东西。“;static String xx3=”什么都不买先存起来。“;static String dd1=”你的决断力不错,虽然有时也会三心二意、犹豫徘徊,可总是在重要关头作出决定,你最大的特色是作了决定不再反悔。“;static String dd2=”你是拿不定主意的人,做事没主见,处处要求别人给你意见,很少自已做判断,因为个性上你有些自卑,不肯定自己。“;static String dd3=”你是判断力超级强的人,不客气地说,你甚至有点莽撞,就是因为你冲动率直的个性,反而考虑不够周详,你常常后悔自己匆匆作决定,忽略了其它事情。“;public JOptionPane optionPane;public Question(){ //构造方法,完成布局 frame=new JFrame(”心理测试“);panel=new JPanel();panel.setLayout(new GridLayout(3,1));label=new JLabel(question,JLabel.CENTER);b1=new JRadioButton(xx1);b2=new JRadioButton(xx2);b3=new JRadioButton(xx3);ButtonGroup group=new ButtonGroup();group.add(b1);group.add(b2);group.add(b3);RadioListener myListener=new RadioListener();b1.addActionListener(myListener);b2.addActionListener(myListener);b3.addActionListener(myListener);Container c=frame.getContentPane();c.add(label,BorderLayout.NORTH);c.add(panel,BorderLayout.CENTER);panel.add(b1);panel.add(b2);panel.add(b3);frame.pack();frame.setVisible(true);} class RadioListener implements ActionListener{ public void actionPerformed(ActionEvent e){ //事件处理,点击选项弹出相应的对话框 JRadioButton rb=(JRadioButton)e.getSource();if(rb==b1){ JOptionPane.showMessageDialog(frame,dd1,”“,JOptionPane.DEFAULT_OPTION);} if(rb==b2){ JOptionPane.showMessageDialog(frame,dd2,”“,JOptionPane.DEFAULT_OPTION);} if(rb==b3){ JOptionPane.showMessageDialog(frame,dd3,”“,JOptionPane.DEFAULT_OPTION);} } } public static void main(String[] args){ new Question();} } 12 上机练习题参考答案 上机练习题3 1.编写Application在窗口内画54个不同颜色的小圆,每当窗口显示在显示器上、从隐藏变成显示、从缩小图标还原、改变窗口的大小时,小圆所呈现的颜色也可以发生变化。(提示:使用随机数产生随机颜色)。程序以不同颜色的小圆铺满窗口。如果在窗口内只显示某个特定的部分,其他部分则不显示时。 【参考程序】 //文件RandomColorDemo.java import java.awt.*;import javax.swing.*;class RandomColorDemo extends JFrame{ static RandomColorDemo frm=new RandomColorDemo();public static void main(String args[]){ frm.setTitle(”Random Color“);frm.setSize(200,150);frm.setVisible(true);} public void paint(Graphics g){ for(int x=10;x<=180;x=x+20)for(int y=30;y<=140;y=y+20){ int red=(int)(Math.random()*255);// 红色的随机数 int green=(int)(Math.random()*255);// 绿色的随机数 int blue=(int)(Math.random()*255);// 蓝色的随机数 g.setColor(new Color(red,green,blue));// 设置颜色 g.fillOval(x,y,15,15);// 用指定的颜色填满小圆 } } } //文件RandomColor.java import java.awt.*;import javax.swing.*;class RandomColor extends JFrame{ static RandomColor frm=new RandomColor();public static void main(String args[]){ frm.setTitle(”Random Color“);frm.setSize(200,150);frm.setVisible(true);} public void paint(Graphics g){ g.setClip(35,37,125,100);//g.clipRect(35,37,125,100);for(int x=10;x<=180;x=x+20)for(int y=30;y<=140;y=y+20){ int red=(int)(Math.random()*255);// 红色的随机数 int green=(int)(Math.random()*255);// 绿色的随机数 int blue=(int)(Math.random()*255);// 蓝色的随机数 g.setColor(new Color(red,green,blue));// 设置颜色 g.fillOval(x,y,15,15);// 用指定的颜色填满小圆 } //g.clearRect(35,37,125,100); Java程序设计简明教程 } } 2.编制Applet程序,使用Graphics类中的各种图形绘制方法,绘制一个可爱的熊宝宝(或其他自己爱好的小动物,例如,小猪,小兔等)。在小应用程序浏览器中查看程序的执行结果。 【参考程序】 import java.applet.*;import java.awt.*;import java.awt.Graphics;public class Bear extends Applet{ public void paint(Graphics g){ g.drawOval(100,40,180,180);//face g.fillOval(120,90,40,35);//left eye g.fillOval(220,90,40,35);//right eye g.fillOval(180,140,25,25);//nose g.setColor(Color.red);g.fillArc(166,170,50,30,180,180);//mouse g.fillArc(85,25,80,80,25,223);//left ear g.fillArc(215,25,80,80,-57,213);//right ear g.drawLine(156,210,96,320);//body g.drawLine(96,320,126,410);g.drawLine(236,210,296,320);g.drawLine(296,320,256,410);g.drawLine(126,410,256,410);g.fillOval(80,240,50,50);//arm g.fillOval(260,240,50,50);g.fillOval(100,390,50,50);//leg g.fillOval(230,390,50,50);} } 3.编制Applet程序,以百叶窗效果显示图像。【参考程序】 //文件Efficient.java import java.awt.*;import java.applet.*;import java.io.*;import java.awt.image.*;public class Efficient extends Applet implements Runnable{ private Image img[],showImage;private MediaTracker imageTracker;private int ImageW,ImageH,totalImage=5,currentImage,nextImage;private Thread thread;private int delay;private int totalPix,pix1[],pix2[],pix3[],pix4[],pix5[],pixA[],pixB[];public void init(){ this.setBackground(Color.black);img=new Image[totalImage];imageTracker=new MediaTracker(this);String s=new String(”“);for(int i=0;i 上机练习题参考答案 imageTracker.addImage(img[i],0);} try{ imageTracker.waitForID(0);}catch(InterruptedException e){} if(getParameter(”delay“)==null){ delay=3000;} else{ delay=Integer.parseInt(getParameter(”delay“));} ImageW=img[0].getWidth(this);ImageH=img[0].getHeight(this);totalPix=ImageW*ImageH;pix1=new int[totalPix];PixelGrabber PG1=new PixelGrabber(img[0],0,0,ImageW,ImageH,pix1,0,ImageW);try{ PG1.grabPixels();}catch(InterruptedException ex){} pix2=new int[totalPix];PixelGrabber PG2=new PixelGrabber(img[1],0,0,ImageW,ImageH,pix2,0,ImageW);try{ PG2.grabPixels();}catch(InterruptedException ex){} pix3=new int[totalPix];PixelGrabber PG3=new PixelGrabber(img[2],0,0,ImageW,ImageH,pix3,0,ImageW);try{ PG3.grabPixels();}catch(InterruptedException ex){} pix4=new int[totalPix];PixelGrabber PG4=new PixelGrabber(img[3],0,0,ImageW,ImageH,pix4,0,ImageW);try{ PG4.grabPixels();}catch(InterruptedException ex){} pix5=new int[totalPix];PixelGrabber PG5=new PixelGrabber(img[4],0,0,ImageW,ImageH,pix5,0,ImageW);try{ PG5.grabPixels();}catch(InterruptedException ex){} currentImage=0;pixA=new int[totalPix];pixB=new int[totalPix];showImage=img[0];thread=new Thread(this);thread.start();} public void paint(Graphics g){ g.drawImage(showImage,0,0,this);} public void update(Graphics g){ paint(g);} public void run(){ 15 Java程序设计简明教程 if(thread==null){ thread=new Thread(this);thread.start();} while(true){ try{ thread.sleep(delay);nextImage=((currentImage+1)%totalImage);if(currentImage==0){ System.arraycopy(pix1,0,pixA,0,totalPix);System.arraycopy(pix2,0,pixB,0,totalPix);showImage=createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));repaint();} if(currentImage==1){ System.arraycopy(pix2,0,pixA,0,totalPix);System.arraycopy(pix3,0,pixB,0,totalPix);showImage=createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));repaint();} if(currentImage==2){ System.arraycopy(pix3,0,pixA,0,totalPix);System.arraycopy(pix4,0,pixB,0,totalPix);showImage=createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));repaint();} if(currentImage==3){ System.arraycopy(pix4,0,pixA,0,totalPix);System.arraycopy(pix5,0,pixB,0,totalPix);showImage=createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));repaint();} if(currentImage==4){ System.arraycopy(pix5,0,pixA,0,totalPix);System.arraycopy(pix1,0,pixB,0,totalPix);showImage=createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));repaint();} while(true){ for(int i=0;i<(int)(ImageH/10);i++){ try{ thread.sleep(100);for(int j=0;j 上机练习题参考答案 currentImage=nextImage;repaint();}catch(InterruptedException e){} } } } 4.编制Applet程序,实现12个钢琴键及其声音的模拟。【参考程序】 //文件Piano.java import java.awt.*;import java.applet.*;class Keyboard extends Canvas {//钢琴键类 Color keyColor=Color.white;AudioClip key;int width,height;Keyboard(Color c, AudioClip k){//初始化钢琴键的颜色及声音 keyColor=c;setBackground(keyColor);key=k;width=this.getSize().width;height=this.getSize().height;} public boolean mouseDown(Event event, int x, int y){//鼠标按下事件 key.play();return true;} public void paint(Graphics g){//画钢琴键 width=this.getSize().width;height=this.getSize().height;g.setColor(Color.black);g.drawRect(0,0,width-1,height-1);} } public class Piano extends Applet{ private int height,width;private Keyboard key[];private AudioClip sound[];public void init(){ this.setLayout(null);width=this.size().width;height=this.size().height;key=new Keyboard[12];sound=new AudioClip[12];String s=new String(”“);for(int i=0;i<12;i++){ s=i + ”.au“;sound[i]=getAudioClip(getCodeBase(),s);} key[0]=new Keyboard(Color.white,sound[0]);key[1]=new Keyboard(Color.black,sound[1]);key[2]=new Keyboard(Color.white,sound[2]);key[3]=new Keyboard(Color.black,sound[3]);17 Java程序设计简明教程 key[4]=new Keyboard(Color.white,sound[4]);key[5]=new Keyboard(Color.white,sound[5]);key[6]=new Keyboard(Color.black,sound[6]);key[7]=new Keyboard(Color.white,sound[7]);key[8]=new Keyboard(Color.black,sound[8]);key[9]=new Keyboard(Color.white,sound[9]);key[10]=new Keyboard(Color.black,sound[10]);key[11]=new Keyboard(Color.white,sound[11]);key[1].setBounds(30,0,20,60);add(key[1]);key[3].setBounds(70,0,20,60);add(key[3]);key[6].setBounds(150,0,20,60);add(key[6]);key[8].setBounds(190,0,20,60);add(key[8]);key[10].setBounds(230,0,20,60);add(key[10]);key[0].setBounds(0,0,40,110);key[2].setBounds(40,0,40,110);key[4].setBounds(80,0,40,110);key[5].setBounds(120,0,40,110);key[7].setBounds(160,0,40,110);key[9].setBounds(200,0,40,110);key[11].setBounds(240,0,40,110);add(key[0]);add(key[2]);add(key[4]);add(key[5]);add(key[7]);add(key[9]);add(key[11]);} } 上机练习题4 1.假设在addressbook数据库表中,存在多个姓氏相同的人,根据这一情况,建立相应的查询功能,使用户可以在ResultSet中滚动记录。要求设计一个合适的图形界面。 程序源代码如下: 【参考程序】 //数据库连接使用ConnectServer类 import java.awt.*;import java.sql.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.util.*;import javax.swing.table.*;public class ex4_1 extends JFrame implements ActionListener{ JTable table;TableModel model; 上机练习题参考答案 DefaultTableModel dtm;Vector title=new Vector();JScrollPane p1;JPanel p3=new JPanel();JLabel bq1=new JLabel(”按姓氏或姓名查询“);JTextField combSs=new JTextField(6);JButton btn1=new JButton(”确定“);String strs=null,xxno,xscore;Statement stmt;ResultSet rs;ResultSetMetaData dbmd;public ex4_1(){ String sql=”select * from address “;try{ stmt=ConnectServer.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery(sql);dbmd=rs.getMetaData();for(int i=1;i<=dbmd.getColumnCount();i++)title.addElement(dbmd.getColumnName(i));dtm=new DefaultTableModel(null,title);table=new JTable(dtm);initTable();table.setRowHeight(20);p1=new JScrollPane(table);btn1.addActionListener(this);p3.add(bq1);p3.add(combSs);p3.add(btn1);this.getContentPane().add(p3,”North“);this.getContentPane().add(p1,”Center“);}catch(Exception e){System.out.println(e);dispose();} this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});setTitle(”学生信息查询“);setSize(600,400);setVisible(true);} void initTable(){ dtm.setRowCount(0);try{ rs.beforeFirst();while(rs.next()){ Vector v1=new Vector();for(int i=1;i<=dbmd.getColumnCount();i++)v1.addElement(rs.getString(i));dtm.addRow(v1);} }catch(SQLException e){e.printStackTrace();} dtm.fireTableStructureChanged();} public void actionPerformed(ActionEvent e){ Vector title1=new Vector();if(e.getSource()==btn1){ strs=(String)combSs.getText();String sql=”select * from address where 姓名 LIKE '“+strs+”%'“;19 Java程序设计简明教程 try{ stmt=ConnectServer.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery(sql);dbmd=rs.getMetaData();for(int i=1;i<=dbmd.getColumnCount();i++)title1.addElement(dbmd.getColumnName(i));dtm=new DefaultTableModel(null,title1);table=new JTable(dtm);}catch(Exception ee){System.out.println(ee);dispose();} initTable();p1=new JScrollPane(table);this.getContentPane().add(p1,”Center“);setTitle(”学生信息“);table.setRowHeight(20);setSize(600,400);setVisible(true);} } public static void main(String args[]){ if(!ConnectServer.conn(”jdbc:odbc:xsgl“,”sa“,”“)){ JOptionPane.showMessageDialog(null,”数据库连接不成功“);System.exit(0);} new ex4_1();} } 2.编写一个应用程序,使其可以从一个数据库的某个表中查询一个列的所有信息。【参考程序】 import java.awt.*;import java.sql.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import javax.swing.table.*;public class ex4_2 extends JFrame implements ActionListener{ JTable table;DefaultTableModel dtm;Vector title=new Vector();JScrollPane p1;JPanel p2=new JPanel();JPanel p3=new JPanel();JButton b1=new JButton(”首页“);JButton b2=new JButton(”上页“);JButton b3=new JButton(”下页“);JButton b4=new JButton(”尾页“);JLabel bb=new JLabel(” “);JButton btn1=new JButton(”查询“);JComboBox combSs=new JComboBox();int count=0;int pagesize=6;int pagecount=0;20 上机练习题参考答案 int page=1;Statement stmt;ResultSet rs;ResultSetMetaData dbmd;public ex4_2(){ String sql=”select * from baseinf“;try{ stmt=ConnectServer.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery(sql);count=getcount();pagecount=(int)count/pagesize+(count%pagesize==0?0:1);dbmd=rs.getMetaData();for(int i=1;i<=dbmd.getColumnCount();i++){ title.addElement(dbmd.getColumnName(i));combSs.addItem(dbmd.getColumnName(i));} dtm=new DefaultTableModel(null,title);table=new JTable(dtm);initTable();table.setRowHeight(20);p1=new JScrollPane(table);if(pagecount!=0)bb.setText(”第“+page+”页“);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);btn1.addActionListener(this);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(b4);p2.add(bb);p3.add(btn1);p3.add(combSs);this.getContentPane().add(p3,”North“);this.getContentPane().add(p1,”Center“);this.getContentPane().add(p2,”South“);}catch(Exception e){System.out.println(e);dispose();} this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ try{ rs.close();stmt.close();ConnectServer.con.close();System.exit(0);}catch(SQLException ee){ee.printStackTrace();} }});setTitle(”书目信息分页浏览“);setSize(500,300);setVisible(true);} void initTable(){ dtm.setRowCount(0);try{ rs.beforeFirst();for(int i=1;i<1+pagesize*(page-1);i++)rs.next();int j=0;while(j Java程序设计简明教程 j++;Vector v1=new Vector();for(int i=1;i<=dbmd.getColumnCount();i++)v1.addElement(rs.getString(i));dtm.addRow(v1);} }catch(SQLException e){e.printStackTrace();} dtm.fireTableStructureChanged();this.getContentPane();} public int getcount(){ int n=0;try{ if(rs.last()){ n=rs.getRow();rs.beforeFirst();return n;}else return 0;}catch(SQLException e){System.out.println(”有异常抛出“);return 0;} } public void actionPerformed(ActionEvent e){ Vector title1=new Vector();if(e.getSource()==btn1){ String strs=(String)combSs.getSelectedItem();String sql=”select no ,“+strs.trim()+” from baseinf“;try{ stmt=ConnectServer.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery(sql);count=getcount();dbmd=rs.getMetaData();for(int i=1;i<=dbmd.getColumnCount();i++)title1.addElement(dbmd.getColumnName(i));dtm=new DefaultTableModel(null,title1);table=new JTable(dtm);}catch(Exception ee){System.out.println(ee);dispose();} initTable();p1=new JScrollPane(table);this.getContentPane().add(p1,”Center“);setTitle(”书目信息按某一列查询浏览“);this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});setSize(500,300);setVisible(true);} else if(e.getSource()==b1)page=1;else if(e.getSource()==b2){if(page>1)page=page-1;} else if(e.getSource()==b3){if(page 第”+page+“页