
2008年~ 2009年第 2 学期
课程名称: Java程序设计 专业年级:电子信息工程2006级
考生学号: 考生姓名:
试卷类型: A卷 □ B卷 □ 考试方式: 开卷 □ 闭卷 □
………………………………………………………………………………………………………
一、问答题(4小题,每题5分,共20分)
1、Java程序分为哪两类,它们各自的特点是什么?
2、请说出final、finally的区别。
3、请说出方法的重载和覆盖的区别。
4、请说出Collection、List、Set接口的各自特点以及相互关系,并列出List和Set接口各自
的常用实现类。
二、填空(10空,每空2分,共20分)
1、Java中的标识符可以由字母、数字、 【1】 以及 【2】 组合而成。
2、设 x = 2 ,则表达式 ( x - - )/3 的值是 【3】 。
3、Java可以通过 【4】 实现多重继承。
4、每个Applet程序必须有一个类是 【5】 类的子类。
5、设Student类有两个域变量,定义如下:
String name; int age;
请定义Student类的构造方法,来初始化两个域变量。 【6】
请写出语句定义一个姓名为susan,年龄为20的学生对象Std。 【7】
6、在java.lang包中与下列基本数据类型相对应的封装类: float:java.lang.Float, double: 【8】 。
7、设有String str="12.34";double d;
请写出语句将str串转换成数值并赋给变量d。 【9】
8、若有Student类,请写出语句,定义一个元素个数为10的Student数组std。
【10】
三、阅读程序,回答下面的问题。(2小题,共18分)
1、读下列程序
package im_virtual;
import java.util.*;
public class TestVirtual
{ public static void main(String args[])
{ Vector v.add(new Mouse()); v.add(new Gerbil()); v.add(new Hamster()); for(Rodent r:v) { r.eat(); } } } abstract class Rodent { abstract void eat(); } class Mouse extends Rodent { void eat() {System.out.println("this is Mouse");} } class Gerbil extends Rodent { void eat() {System.out.println("this is Gerbil");} } class Hamster extends Rodent { void eat() {System.out.println("this is Hamster");} } 问题(1):分别指出上面的程序的公共类和主类。(2分) 问题(2):上面程序应该保存为什么名字的文件?(2分) 问题(3):请写出编译和运行这个文件的完整命令,注意给出环境变量的设置。(假设源文件 保存在d:\\java目录,JDK安装在c:\\j2sdk目录)(2分) 问题(4): 上述程序的执行结果是什么?(4分) 2、读下列程序,写出执行结果。 class TestException { public static void main(String[] args) { try{arraySize(); } catch(IndexOutOfBoundsException e) { System.out.println("IndexOutOfBoundsException");} catch(NegativeArraySizeException e) { System.out.println("NegativeArraySizeException");} catch(Exception e) { System.out.println("Exception");} finally { System.out.println("finally");} System.out.println("out of try catch"); } static void arraySize() throws NegativeArraySizeException { try{int a[]=new int[-3]; } catch(NegativeArraySizeException e) { System.out.println("arraySize() throw NegativeArraySizeException"); throw e;} } } 四、程序填空(6空,每空2分,共12分) 1、本程序TjCharNum.java的功能:从键盘输入一个字符串,并统计该字符串中字符'C'出现的概率。 【1】 ; public class TjCharNum { public static void main(String args[]) { BufferedReader br=new BufferedReader( 【2】 ); String s; double d; try{ s= 【3】 ; d= 【4】 ; System.out.println("ratio="+d); } catch(IOException e) { e.printStackTrace();} } static double TjNUM(String s,char c) { double num=0; for(int i=0;i return ( 【6】 ); } } 五、编程(2小题,共30分, 12+18) 1、编写程序实现功能:将从键盘输入的10字符串逐行写到Stirng.dat文件中。(12分) 2、(1) 定义复数类Complex,其满足如下要求(18分): ●复数类Complex 的属性有: RealPart : double型,代表复数的实数部分 ImaginPart : double型,代表复数的虚数部分 ●复数类Complex 的方法有: Complex( double rp , double ip ) : 构造函数,形参 rp 为实部的初值,ip为虚部的初值。 Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结果 仍是一个复数,并将结果返回给此方法的调用者。 Complex complexMinus(Complex a) : 将当前复数对象与形参复数对象相减,所得的结果仍是一个复数,并将结果返回给此方法的调用者。 public String toString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。 (2)定义一个运算符错误异常类OperatorIllegalException。 (3) 编写一个完整的Java Application程序,实现如下功能:创建两个复数对象,然后让用户从键盘输入一个运算符('+'或'-'),求取两个复数对象的和或差的结果并输出。若用户输入的运算符不是 '+'或'-',抛出异常OperatorIllegalException。 参 课程名称: Java程序设计 适用专业年级: 电信2006级 考生学号: 考 生 姓 名: ……………………………………………………………………………………………………… 一、问答题(4小题,每题5分,共20分) 1、答:Java程序分为两类:Java Application和Java Applet。Java Application是完整的程序,需要的解释器来解释执行。而Java Applet则是嵌入在HTML网页中的非程序,需要由WWW浏览器内含的Java解释器来解释执行。 2、答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally—在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入 finally 块(如果有的话)。 3、答:方法的覆盖和重载是Java多态性的不同表现。覆盖是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载。 4、答:Collection是集合类最基本的接口,而Set和List是Collection接口的子接口。Set中不记录元素的保存顺序,且不允许有重复元素。而List中记录元素的保存顺序,且允许有重复元素。Set接口的重要实现类有HashSet,List接口的重要实现类有ArrayList、Vector和LinkedList。 二、填空(10空,每空2分,共20分) [1] 下划线 [2] $美元符号 [3] 0 [4] 接口 [5] Applet [6] Student(String name,int age) { this.name=name; this.age=age; } [7] Student std=new Student(“Susan”,20); [8] Java.lang.Double [9] d=Double.parseDouble(str); [10] Student std[]=new Student[10]; 三、阅读程序,回答下面的问题。(2小题,共18分) 1、问题(1):分别指出上面的程序的公共类和主类。(2分) 答:公共类:TestVirtual 主类:TestVirtual 问题(2):上面程序应该保存为什么名字的文件?(2分) 答:TestVirtual.java 问题(3):请写出编译和运行这个文件的完整命令,注意给出环境变量的设置。(假设源文件 保存在d:\\java目录,JDK安装在c:\\j2sdk目录)(2分) 答:set path=C:\\j2sdk\\bin; set classpath=d:\\java javac –d . TestVirtual.java java im_virtual.Test 问题(4): 上述程序的执行结果是什么?(4分) 答:this is Mouse this is Gerbil this is Hamster 2、程序运行结果: arraySize() throw NegativeArraySizeException NegativeArraySizeException finally out of try catch 四、程序填空(7空,每空2分,共12分) [1] import java.io.* [2] new InputStreamReader(System.in) [3] br.readLine() [4] TjNUM(s,'C') [5] num++ [6] num/s.length() 五、编程(2小题,共30分) 1、import java.io.*; public class StringSave { public static void main(String args[]) { try{ String s; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter fr=new BufferedWriter(new FileWriter("String.dat")); for(int i=0;i<10;i++) { s=br.readLine(); System.out.println(s); fr.write(s); fr.newLine(); } fr.close(); } catch(IOException e) {e.printStackTrace();} } } 2、 import java.io.*; class Complex { double RealPart; double ImageinPart; Complex(double rp,double ip) { RealPart=rp; ImageinPart=ip;} Complex complexAdd(Complex a) { Complex temp; temp=new Complex(RealPart+a.RealPart,ImageinPart+a.ImageinPart); return temp; } Complex complexMinus(Complex a) { Complex temp; temp=new Complex(RealPart-a.RealPart,ImageinPart-a.ImageinPart); return temp; } public String toString() { if (ImageinPart<0) return (RealPart+"-"+Math.abs(ImageinPart)+"i"); else return (RealPart+"+"+ImageinPart*+"i"); } } class OperatorIllegalException extends Exception { OperatorIllegalException(String msg) {super(msg); } } class ComplexApp { public static void main(String args[]) {char operator; try{ Complex c1=new Complex(1,2); Complex c2=new Complex(3,4); Complex complexResult; operator=(char)System.in.read(); switch(operator) { case '+':complexResult=c1.complexAdd(c2);break; case '-':complexResult=c1.complexMinus(c2);break; default :throw new OperatorIllegalException("运算符异常!"); } System.out.println(complexResult); } catch (OperatorIllegalException e) {System.out.println(e); } catch(IOException e) {System.out.println(e); } } }
