一. 填空题(共2题,100分)
1. (填空题)
对象的组合及参数传递
编写一个Java应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成员。
具体要求如下:
有三个源文件:TV.java中的TV类负责创建“电视”对象。 Family.java中的Family类负责创建“家庭”对象。 MainClass.java中的MainClass类是应用程序的主类。
在主类的main()方法中首先使用TV类创建一个对象haierTV,然后使用Family类再创建一个对象zhangSanFamily,并将先前TV类的实例haierTV的引用传递给zhangSanFamily对象的成员变量homeTV。请把【代码1】、【代码2】、【代码3】和【代码4】的语句补充完整。(注意:该程序在eclipse中执行,在eclipse中需要创建三个源文件TV.java、Family.java和MainClass.java)
程序模板如下:
TV.java
----------------------------------------
public class TV {
int channel; //电视频道
void setChannel(int m) {
if(m>=1){
channel=m;
}
}
int getChannel(){
return channel;
}
void showProgram(){
switch(channel) {
case 1 : System.out.println("综合频道");
break;
case 2 : System.out.println("经济频道");
break;
case 3 : System.out.println("文艺频道");
break;
case 4 : System.out.println("国际频道");
break;
case 5 : System.out.println("体育频道");
break;
default : System.out.println("不能收看"+channel+"频道");
}
}
}
Family.java
----------------------------------------
public class Family {
TV homeTV;
void buyTV(TV tv) {
【代码1】 //将参数tv赋值给homeTV
}
void remoteControl(int m) {
homeTV.setChannel(m);
}
void seeTV() {
homeTV.showProgram(); //homeTV调用showProgram()方法
}
}
MainClass.java
----------------------------------------
public class MainClass {
public static void main(String args[]) {
TV haierTV = new TV();
【代码2】 //haierTV调用setChannel(int m),并向参数m传递5
System.out.println("haierTV的频道是"+haierTV.getChannel());
Family zhangSanFamily = new Family();
【代码3】//zhangSanFamily调用void buyTV(TV tv)方法,并将haierTV传递给参数TV
System.out.println("zhangSanFamily开始看电视节目");
zhangSanFamily.seeTV();
int m=2;
System.out.println("zhangSanFamily将电视更换到"+m+"频道");
【代码4】 //zhangSanFamily将电视更换到频道m
System.out.println("haierTV的频道是"+haierTV.getChannel());
System.out.println("hangSanFamily再看电视节目");
zhangSanFamily.seeTV();
}
}
回答以下问题:
(1)省略【代码2】程序能否通过编译_____________(回答是或者否)?若能通过编译,程序输出的结果是怎么样的_____________?(回答从程序输出结果开始变化的部分)
(2)在主类的main()方法的最后增添下列代码:
Family lisiFamily=new Family();
lisiFamily.buyTV(haierTV);
lisiFamily.seeTV();
该代码的输出结果是什么_____________?
(1) homeTV=tv;
(2) haierTV.setChannel(5);
(3) zhangSanFamily.buyTV(haierTV);
(4) zhangSanFamily.remoteControl(m);
(5) 是
(6)
haierTV的频道是0
zhangSanFamily开始看电视节目
不能收看0频道
(7) 经济频道
2. (填空题)
类变量与实例变量,类方法与实例方法的用法
编写一个Java应用程序,模拟两个村庄共用同一口井水。编写一个Village类,该类有一个静态的 int 型成员变量waterAmount,用于模拟井水的水量。
在主类Land中创建两个村庄,一个村庄改变了waterAmount的值,另一个村庄查看waterAmount的值。
请把【代码1】、【代码2】、【代码3】、【代码4】和【代码5】的语句补充完整。(注意:该程序在eclipse中执行,在eclipse中需要创建两个源文件Village.java和Land.java)
程序模板如下:
Village.java
-------------------------------------------------------------------------------
public class Village {
static int waterAmount; //模拟水井的水量
int peopleNumber; //村庄的人数
String name; //村庄的名字
Village(String s) {
name = s;
}
static void setWaterAmount(int m) {
if(m>0)
waterAmount = m;
}
void drinkWater(int n){
if( waterAmount-n>=0) {
waterAmount = waterAmount-n;
System.out.println(name+"喝了"+n+"升水");
}
else
waterAmount = 0;
}
static int lookWaterAmount() {
return waterAmount;
}
void setPeopleNumber(int n) {
peopleNumber = n;
}
int getPeopleNumber() {
return peopleNumber;
}
}
Land.java
-------------------------------------------------------------------------------
public class Land {
public static void main(String args[]) {
【代码1】 //用类名调用setWaterAmount(int m),并向参数传值200
int leftWater =【代码2】 //用Village类的类名访问waterAmount
System.out.println("水井中有 "+leftWater+" 升水");
Village zhaoZhuang,maJiaHeZhi;
zhaoZhuang = new Village("赵庄");
maJiaHeZhi = new Village("马家河子");
zhaoZhuang.setPeopleNumber(80);
maJiaHeZhi.setPeopleNumber(120);
【代码3】//zhaoZhuang调用drinkWater(int n),并向参数传值50
leftWater = 【代码4】//maJiaHeZhi调用lookWaterAmount()方法
String name=maJiaHeZhi.name;
System.out.println(name+"发现水井中有 "+leftWater+" 升水");
maJiaHeZhi.drinkWater(100);
leftWater = 【代码5】//zhaoZhuang调用lookWaterAmount()方法
name=zhaoZhuang.name;
System.out.println(name+"发现水井中有 "+leftWater+" 升水");
int peopleNumber = zhaoZhuang.getPeopleNumber();
System.out.println("赵庄的人口:"+peopleNumber);
peopleNumber = maJiaHeZhi.getPeopleNumber();
System.out.println("马家河子的人口:"+peopleNumber);
}
}
回答以下问题:
(1)【代码3】是否可以是Village.drinkWater(50);_____________(回答是或者否)?
(2)【代码4】是否可以是Village.lookWaterAmount();_____________(回答是或者否)?
(3)Land类main()方法中倒数第2行代码是否可以更改为:peopleNumber = Village.getPeopleNumber();_____________(回答是或者否)?
(1) Village.setWaterAmount(200);
(2) Village.waterAmount;
(3) zhaoZhuang.drinkWater(50);
(4) majiaHeZhi.lookWaterAmount();
(5) zhaoZhuang.lookWaterAmount();
(6) 否
(7) 是
(8) 否