《Java编程语言:原理与范例》课后实验源代码 下载本文

System.out.println(c3.equals(c4) ? \ } }

实验四

/*********************************

5. 查阅java.util包下的GregorianCalendar类的API文档,编写MyDate类继承该类,并实现以下方法:

MyDate(int year, int month, int day); // 根据指定的年月日构造日期对象 int getYear(); // 得到当前日期的年份 int getMonth(); // 得到当前日期的月份

int getDayOfYear(); // 得到当前日期是本年的第几天 int getDayOfMonth(); // 得到当前日期是本月的第几天

int getDayOfWeek(); // 得到当前日期是本周的第几天(即星期几)

MyDate getBeforeDate(int beforeDays);// 得到当前日期之前若干天对应的日期对象 MyDate getAfterDate(int afterDays); // 得到当前日期之后若干天对应的日期对象 int daysBetweenWith(MyDate d); // 得到当前日期与指定日期d相隔多少天 最后编写一个带main方法的测试类MyDateTest,分别测试MyDate中的各个方法。 提示:① 可通过父类GregorianCalendar相应方法的组合以实现上述各方法。 ② 注意父类中根据年月日创建日历对象的构造方法中,月份参数是从0开始的。 **********************************/ package ch06;

import java.util.GregorianCalendar;

class MyDate extends GregorianCalendar { MyDate(int year, int month, int day) { super(year, month - 1, day); } int getYear() { return super.get(YEAR); } int getMonth() { return super.get(MONTH) + 1; } int getDayOfYear() { return super.get(DAY_OF_YEAR); } int getDayOfMonth() { return super.get(DAY_OF_MONTH); }

int getDayOfWeek() { return super.get(DAY_OF_WEEK); } MyDate getBeforeDate(int beforeDays) { long time = super.getTimeInMillis() - beforeDays * 24L * 60 * 60 * 1000; GregorianCalendar gc = new GregorianCalendar(); gc.setTimeInMillis(time); return new MyDate(gc.get(YEAR), gc.get(MONTH) + 1, gc.get(DAY_OF_MONTH)); } MyDate getAfterDate(int afterDays) { long time = super.getTimeInMillis() + afterDays * 24L * 60 * 60 * 1000; GregorianCalendar gc = new GregorianCalendar(); gc.setTimeInMillis(time); return new MyDate(gc.get(YEAR), gc.get(MONTH) + 1, gc.get(DAY_OF_MONTH)); } int daysBetweenWith(MyDate d) { long t1 = super.getTimeInMillis(); long t2 = d.getTimeInMillis(); return (int) (Math.abs(t1 - t2) / (24 * 60 * 60 * 1000)); } void print(String name) { System.out.printf(\%d-%d-%d\\n\name, getYear(), getMonth(), getDayOfMonth()); } }

public class Exp5_5 { public static void main(String[] args) { MyDate d1 = new MyDate(2014, 3, 12); MyDate d2 = new MyDate(2012, 5, 5); MyDate d3 = new MyDate(2013, 3, 12); d1.print(\ d2.print(\ d3.print(\ System.out.println(\是该星期的第 \天\ System.out.println(\是该月的第 \天\ System.out.println(\是该年的第 \天\

d1.getAfterDate(50).print(\的 50 天后\ d2.getBeforeDate(365).print(\的 365 天前\ System.out.println(\和 d3 间相差 \天\ } }

第六章 实验一

/********************************* 2. 编写程序实现以下逻辑。

① 抽象类Animal具有一个抽象方法walk。 ② 接口Flyable具有一个方法fly。

③ 类Bird继承Animal并实现Flyable。

编写测试类BirdTest,在main方法中构造一个Bird对象并调用其walk和fly方法 (重写这2个方法时,打印一行用于模拟的字符串即可)。 **********************************/ package ch07;

abstract class Animal { abstract void walk(); }

interface Flyable { void fly(); }

class Bird extends Animal implements Flyable { void walk() { System.out.println(\ } public void fly() { System.out.println(\ } }

public class Exp6_2 { public static void main(String[] args) { Bird b = new Bird(); b.walk(); b.fly(); } }

实验二

/********************************* 3. 接口MobilePhone定义了以下方法: void on(); // 开机 void off(); // 关机 void charge(); // 充电 void call(); // 打电话 void play(); // 娱乐

分别采用如下两种方式创建两个实现MobilePhone接口的类的对象, 并在测试类中分别对这两个对象调用上述方法。 ① 编写类IPhone4S实现MobilePhone接口。 ② 使用实现了MobilePhone接口的匿名内部类。 **********************************/ package ch07;

interface MobilePhone { void on(); void off(); void charge(); void call(); void play(); }

class IPhone4S implements MobilePhone { public void on() { System.out.println(\ } public void off() { System.out.println(\ } public void charge() { System.out.println(\ } public void call() { System.out.println(\ }

public void play() { System.out.println(\ } }

public class Exp6_3 { public static void main(String[] args) { MobilePhone ip = new IPhone4S(); ip.on(); ip.off(); ip.charge(); ip.call(); ip.play(); MobilePhone htc = new MobilePhone() { public void on() { System.out.println(\ } public void off() { System.out.println(\ } public void charge() { System.out.println(\ } public void call() { System.out.println(\ } public void play() { System.out.println(\ } }; htc.on(); htc.off(); htc.charge(); htc.call(); htc.play(); } }

实验三