1、Java程序设计练习试卷 1及答案与解析 1 阅读以下说明和 Java代码,填补空缺。 说明 java.util库中提供了 Vector模板类,可作为动态数组使用,并可容纳任意数据类型。 该类的部分方法说明如下所示: 方法名 含义 add(k) 向 vector对象的尾部添加一个元素 k removeElementAt(i) 删除序号为 i的元素 (vector元素序号从 0开始 ) isEmpty( ) 判断 vector对象是否含有元素 size( ) 返回 vector对象中所包含的元素个数 Java代码 Import _; public class JavaMain static pr
2、ivate final int _ =6; public static void main(Stringargs) Vector theVector=new Vector _ ( ); /初始化 theVector,将 theVector的元素设置为 0至 5 for(int cEachItem=0; cEachItem ARRAY_SIZE; cEachItem+) theVector. add( _ ); showVector(theVector); /依次输出 theVector巾的元素 theVector. removeElementAt(3); showVector(theVecto
3、r); public static void showVector(Vector theVector) if(theVector. isEmpty( ) System.out.printin(“theVector is empty.“); return; for(int loop=0; loop theVector.size( ); loop+) System.out.print(theVector.get(loop); System.out.print(“,“); System.out.printin( ); 该程序运行后的输出结果为: 0, 1, 2, 3, 4, 5 _ 2 阅读以下说明
4、和 Java代码,回答问题。 说明 已知类 Stock和类 cxyjava都定义在 cxyjava.java文件中,类 Stock的定义中第 14行前共有四行出现了错误,将下而代码修改正确并完善后的输出结果为: 0:0 1:23 Java代码 01 publiC class Stock 02 static 03 shares=0; 04 share_val = 0.0; 05 06 public Stock( ) getData( ); 07 publie Stock(int n, int pr=0) 08 shares=n; 09 share val=pr; 10 getData( ); 1
5、1 12 public void getData( ) 13 System.out.printin(shares+ “:“ +share_val); 14 15 private int shares; 16 private int share val; 17 ; 18 19 public class cxyjava 20 public static void main(String args) 21 Stock a= (1) ; 22 Stock b=new Stock(1, 23); 23 /其他无输出代码省略 24 25 请补齐第 21行代码中的空缺。 3 阅读下列说明、图和 Java代码
6、,填补空缺。 说明 已知对某载客车辆 (Car)进行类建模,如图 13-2所示,其中类 Engine表示发动机引擎,类 Wheel表示车轮,类Body表示车身,类 Driver表示司机,类 Passenger表示乘客。Java代码 class Body /此处代码省略 ; /车身类 class Passenger /此处代码省 略 ; /乘客类 class Wheel /此处代码省略 ; /车轮类 class Driver /司机类 public String name; /表示第几路公交车司机 public Driver(String driverName)name=driverName;
7、/构造函数 ; class Engine /引擎类 public String engineNo; /引擎编号 public Engine(String engineNo)this.engineNo=engineNo; /构造函数 ; public class Car /汽车类 static final int (1) =7; /定义最多载客数 static final int MAX_WHEELS=5; /定义最多轮胎数 protected Engine engine; protected Driver driver; protected Body body=new Body( ); pro
8、tected Wheelwheels; protected Passengerpassengers; public Car(Driver driver) /构造函数 (2) .driver=driver; engine=new Engine(“TX6536型号引擎 “); wheels = new WheelMAX_WHEELS; passengers=new PassengerMAX_PASSENGERS; for(int index=0; index MAX_WHEELS; index+) wheelsindex=new Wheel( ); for(int index=0; index M
9、AX_PASSENGERS; index+) passengersindex=null; int getPassengerNumber( ) /获取车上乘客数量 /此处代码省略 void getOnPassenger(Passenger aPassenger ) /乘客上车 /此处代码省略 void run( ) /开车 if( (3) )(System.out.printin(“司机尚未上车 !“); return; /此处代码省略 public static void main(String args) Driver driver=new Driver(“第五路公交车司机 “); Car
10、car=new Car( (4) ); for(int index=0; index MAX_PASSENGERS; index+) car.getOnPassenger( (5) Passenger( ); car.run( ); 3 阅读下列说明、图和 Java代码,回答问题。 说明 已知四个类之间的关系如图13-3所示,分别对每个类的方法进行编号,例如, Shape的 perimeter( )为 1号,表示为 “1:perimeter( )”, Rectangle类的 perimeter( )为 2号,表示为 “2:perimeter( )”,以此类推,其中,每个类的 perimeter
11、方法签名相同。Java代码 Triangle tr=new Triangle( ); Square sq=new Square( ); Shape sh=tr; 4 关于上述 Java代码中 sh和 tr的以下叙述中,哪两个是正确的 (写出编号 )? sh和 tr分别引用同一个对象; sh和 tr分别引用同一类型的不同的对象; sh和 tr分别引用不同类型的不同对象; sh和 tr分别引用同一个对象的不同复制; sh和 tr所引用的内存空间是相同的 5 写出下面消息对应的方法编号 (如果该消息错误或者没有对应的方法调用,请填写 “无 ”)。 tr.height( ) 6 写出下面消息对应的方法
12、编号 (如果该消息错误或者没有对应 的方法调用,请填写 “无 ”)。 sh.perimeter( ) 7 写出下面消息对应的方法编号 (如果该消息错误或者没有对应的方法调用,请填写 “无 ”)。 sq.height( ) 8 写出下面消息对应的方法编号 (如果该消息错误或者没有对应的方法调用,请填写 “无 ”)。 sq.perimeter( ) 9 写出下面消息对应的方法编号 (如果该消息错误或者没有对应的方法调用,请填写 “无 ”)。 sh.height( ) 10 写出下面消息对应的方法编号 (如果该消息错误或者没有对应的 方法调用,请填写 “无 ”) tr.perimeter( ) 11
13、 下列赋值语句中哪两个是合法的 (写出合法赋值语句的编号 )? Java程序设计练习试卷 1答案与解析 1 【正确答案】 java.util.Vector或 java.util.* ARRAY_SIZE Integer cEachItem 0, 1, 2, 4, 5 【试题解析】 本题考查的是 Java语言的基本应用。在使用 Java库中的类时,要导入类所在的包, (1)处应为 java.util.Vector或 java.util.*。 (2)处考查 的是变量的定义,此处应为 ARRAY_SIZE。 (3)处是考察 Vector模板类存储的数据类型,所以此处应为 Integer类型, (4)
14、处代码主要是将循环变量的值存入 cEachItern中,因此应为 cEachItem。程序开始会输出 0, 1, 2, 3, 4, 5,再次输出时则没有 3,应为 0, 1, 2, 4, 5。 【知识模块】 Java程序设计 2 【正确答案】 第 1行,去掉 public 第 2行,去掉 static 第 4行, share val=0 第 7行,去掉 “=0” new Stock( ),或者 new Stock(0, 0) 【试题解析】 Java代码中,一个文件只能有一个与文件同名的公共类,所以问题 1中第一行 Stock类前面的 public修饰符要去掉。静态的初始化区域只能对类的静态变量
15、进行初始化,而 shares和 share val不是静态变量,所以需要去掉第 2行的 static。第 16行将 share val定义为 int型,所以第 4行赋值有误,需要改为0。第 7行 Stock类的构造函数没有默认参数的用法,所以需要将默认值去掉。对于问题 2由于程序输出的第一行为 0:0,所以直接调用构造函数 Stock( ),因为默认参数均已为 0,或者调用构造函数 Stock(0, 0)也可实现。 【知识模块】 Java程序设计 3 【正确答案】 MAX_PASSENGERS this driver=null driver new 【试题解析】 根据题意可得,程序代码中空 (
16、1)处定义最多载客数目,从后面的程序代码可得 MAX_PASSENGERS用来定义最多载客数目,所以空 (1)处应该为MAX_PASSENGERS。由于参数的名称 driver与成员变量的名称相同,因此需要加上 this,所以空 (2)处为 this。空 (3)处主要用于判断司机是否上车,可以通过driver是否等于 null进行判断。空 (4)处用于新建一个汽车对象,其构造方法中需要一个司机对象 driver,所以空 (4)处应为 driver。函数 getOnPassenger的参数应该是乘客对象,因此要构造一个乘客对象,所以空 (5)处为 new。 【知识模块】 Java程序设计 【知识
17、模块】 Java程序设计 4 【正确答案】 【知识模块】 Java程序设计 5 【正确答案】 3 【知识模块】 Java程序设计 6 【正确答 案】 5 【知识模块】 Java程序设计 7 【正确答案】 无 【知识模块】 Java程序设计 8 【正确答案】 4 【知识模块】 Java程序设计 9 【正确答案】 无 【知识模块】 Java程序设计 10 【正确答案】 5 【知识模块】 Java程序设计 11 【正确答案】 【试题解析】 根据题中代码可知, tr引用一个 Triangle对象, sq引用一个Square对象, sh和 tr引用同一个 Triangle对象。所以问题 1中 正确,由于sh和 tr引用同一个对象,其引用的内存空间也必然相同, 错误。对于问题2中的消息, tr引用 Triangle对象,所以 tr.height( )调用 Triangle类的 height方法; sq引用 Square对象,但 Square没有 height方法,所以 sq.height( )没有对应任何方法调用,但 Square类有 perimeter方法,所以 sq.perimeter( )调用Square类的 perimeter方法,其他几项同上。问题 3中,赋值运算的左边应该是右边的父类或同一类型才可以正确赋值。所 以正确的是 【知识模块】 Java程序设计