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

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;
}
}

浙公网安备 33010602011771号