JAVA程序设计实验4

一. 填空题(共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) 否

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值