Java 之 实验八 -- 编写类

实验八

编写类

练习一 A Bank Account Class

  1. 文件Account.java是一个银行账户类。将该文件保存至本地磁盘目录,并仔细查看该类包含的方法,然后填写该类不完整的语句。注意:不必在本题中测试该程序。
    a. 为方法toString补充代码,该方法返回包含姓名,账户号码以及账户余额信息的一段字符串。
    b. 为方法chargeFee补充代码,从账户中扣去服务费。
    c. 修改chargeFee方法,使其返回一个新的账户余额。
    d. 为方法changeName补充代码,该方法有一个参数,为字符串类型,能够变更账户的姓名。

  2. 文件ManageAccounts.java是一个外壳程序(shell program),该程序使用上面的Account类。将该程序保存至本地磁盘目录,并按照注释补充代码
    Account.java

package J08;

public class Account {
    private double balance;
    private String name;
    private long acctNum;
    public Account(double initBal,String owner,long number){
        balance = initBal;
        name = owner;
        acctNum = number;
    }
    public void withdraw(double amount){
        if(balance >= amount){
            balance -= amount;
        }else {
            System.out.println("Insufficient funds");
        }
    }
    public void deposit(double amount){
        balance += amount;
    }

    public double getBalance() {
        return balance;
    }
    public String tostring(){
        return "姓名:" + name + ",账户号码:"
                + acctNum + ",账户余额:" + balance;
    }
    public void chargeFee(double fee) {
        balance = balance - fee;
    }
    public void changeName(String newName) {
        name = newName;
    }
}

ManageAccounts.java

package J08;

public class ManageAccounts {

	public static void main(String[] args) {
		Account acct1,acct2;
		acct1 = new Account(1000, "Sally", 1111);
		acct2 = new Account(500, "Joe", 1112);
		acct2.deposit(100);	
		System.out.println("Joe的账户余额为:" + acct2.getBalance());
		acct1.withdraw(50);
		System.out.println("Sally的账户余额为:" + acct1.getBalance());
		acct1.chargeFee(15);
		acct2.chargeFee(15);
		System.out.println("Sally的账户余额为:" + acct1.getBalance());
		System.out.println("Joe的账户余额为:" + acct2.getBalance());
		acct2.changeName("Joseph");
		System.out.println(acct2.tostring());
		System.out.println(acct1.tostring());
	}
}

练习二 设计类

如图,编写Java程序,实现身份证号码中的秘密,即给定一个合法的身份证号码,获取生日和年龄。现有两个类“读取身份证号码”和“IdentityCard”,请补充完整。(提示:身份证号码中第6至14位为生日)

lbrglu9y.png

IdentityCard.java

package J08;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class IdentityCard {
		public static void main(String[] args) throws ParseException {
			ReadIdCard readIdCard = new ReadIdCard();
			String IdCard = readIdCard.getIdCard();
			System.out.println("身份证号码:" + IdCard);
			String year = IdCard.substring(6, 10);
			String month = IdCard.substring(10, 12);
			String day = IdCard.substring(12, 14);
			System.out.println("生日: " + year + "年" + month + "月" + day + "日");
			int age = countAge(IdCard, year, month, day);
			System.out.println("年龄:" + age);
		}
		public static int countAge(String IdCard, String year, String month, String day) {
			Date date = new Date();
			SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
			String currentYear = fmt.format(date).substring(0, 4);
			String currentMonth = fmt.format(date).substring(5, 7);
			String currentDay = fmt.format(date).substring(8, 10);
			int age = 0;
			if (Integer.parseInt(month) == Integer.parseInt(currentMonth)) {
				if (Integer.parseInt(day) <= Integer.parseInt(currentDay)) {
					age = Integer.parseInt(currentYear) - Integer.parseInt(year);
				} else {
					age = Integer.parseInt(currentYear) - Integer.parseInt(year) - 1;
				}
			} else {
				if (Integer.parseInt(month) < Integer.parseInt(currentMonth)) {
					age = Integer.parseInt(currentYear) - Integer.parseInt(year);
				} else {
					age = Integer.parseInt(currentYear) - Integer.parseInt(year) - 1;
				}
			}
			return age;
		}
	}

ReadIdCard.java

package J08;
import java.util.Scanner;

public class ReadIdCard {
    private String IdCard;

    public String getIdCard() {
        Scanner scan = new Scanner(System.in);
        this.IdCard = scan.nextLine();
        return this.IdCard;
    }

}

End

posted @ 2023-09-18 17:51  Ivan丶ky  阅读(360)  评论(0)    收藏  举报