饼干妹妹的第三次博客作业
一、三次作业的知识点、题量、难度
考察的知识点
主要考察了对类的结构设计的理解,以及在处理输入时的方法。
作业的题量与难度
三次题目集的内容感觉在熟悉了Java之后并不难,除了在思考类的结构设计时会有一点难度,在其他编码方面感觉没有什么困难。
二、设计与分析
①题目集7(7-1)与题目集7(7-2)两道题目的递进式设计分析总结:
我这里先把源码贴上来:
题目集7(7-1):
import java.util.*; class Card implements Comparable<Card>{ private Shape shape; Card() { } Card(Shape shape) { this.shape = shape; } public Shape getShape() { return shape; } public void setShape(Shape shape) { this.shape = shape; } @Override public int compareTo(Card card) { if(shape.getArea() < card.getShape().getArea()) return 1; else if(shape.getArea() > card.getShape().getArea()) return -1; return 0; } } abstract class Shape { private String shapeName; Shape() { } Shape(String shapeName) { this.shapeName = shapeName; } public String getShapeName() { return shapeName; } public void setShapeName(String shapeName) { this.shapeName = shapeName; } public double getArea() { return 0; } public boolean validate() { return true; } public String toString() { return "lin"; } } class Trapezoid extends Shape { private double topSide; private double bottonSide; private double height; Trapezoid() { } Trapezoid(double topSide,double bottonSide,double height) { this.topSide = topSide; this.bottonSide = bottonSide; this.height = height; super.setShapeName("Trapezoid"); } public double getTopSide() { return topSide; } public void setTopSide(double topSide) { this.topSide = topSide; } public double getBottonSide() { return bottonSide; } public void setBottonSide(double bottonSide) { this.bottonSide = bottonSide; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } @Override public double getArea() { return (this.topSide + this.bottonSide)*this.height/2; } @Override public boolean validate() { if(this.topSide <= 0 || this.bottonSide <= 0 || this.height <= 0) return false; return true; } } class Circle extends Shape { private double radius; Circle(){ } Circle(double radius){ this.radius = radius; super.setShapeName("Circle"); } @Override public double getArea() { return Math.PI*this.radius*this.radius; } @Override public boolean validate() { if(this.radius <= 0) return false; return true; } } class Rectangle extends Shape { private double width; private double length; Rectangle() { } Rectangle(double width,double length) { this.width = width; this.length = length; super.setShapeName("Rectangle"); } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getLength() { return length; } public void setLength(double length) { this.length = length; } @Override public double getArea() { return this.width*this.length; } @Override public boolean validate() { if(this.width <= 0 || this.length <= 0) return false; return true; } } class Triangle extends Shape { private double side1; private double side2; private double side3; Triangle() { } Triangle(double side1,double side2,double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; super.setShapeName("Triangle"); } @Override public double getArea() { return (1.0/4.0)*Math.sqrt((this.side1+this.side2+this.side3)*(this.side1+this.side2-this.side3)*(this.side1+this.side3-this.side2)*(this.side2+this.side3-this.side1)); } @Override public boolean validate() { if(this.side1 + this.side2 <= this.side3 || this.side1 + this.side3 <= this.side2 || this.side2 + this.side3 <= this.side1) return false; return true; } } class DealCardList { Scanner input = new Scanner(System.in); private ArrayList<Card> cardlist = new ArrayList<Card>(); DealCardList() { } DealCardList(ArrayList<Integer> list) { for(int i = 0;i < list.size();i++) { switch(list.get(i)) { case 1: cardlist.add(new Card( new Circle( Main.input.nextDouble() ) ));break; case 2: cardlist.add(new Card( new Rectangle( Main.input.nextDouble(),Main.input.nextDouble() ) ));break; case 3: cardlist.add(new Card( new Triangle( Main.input.nextDouble(),Main.input.nextDouble(),Main.input.nextDouble() ) ));break; case 4: cardlist.add(new Card( new Trapezoid( Main.input.nextDouble(),Main.input.nextDouble(),Main.input.nextDouble() ) ));break; } } } public boolean validate() { for(int i = 0;i < cardlist.size();i++) { if(!cardlist.get(i).getShape().validate()) return false; } return true; } public void cardSort() { // Comparator m = new Comparator<Card>() { // @Override // public int compare(Card card1,Card card2) { // if(card1.getShape().getArea() < card2.getShape().getArea()) // return 1; // else if(card1.getShape().getArea() > card2.getShape().getArea()) // return -1; // return 0; // } // }; // cardlist.sort(m); Collections.sort(cardlist); } public double getAllArea() { double num = 0; for(int i = 0;i < cardlist.size();i++) { num += cardlist.get(i).getShape().getArea(); } return num; } public void showResult() { System.out.println("The original list:"); for(int i = 0;i < cardlist.size();i++) System.out.print(cardlist.get(i).getShape().getShapeName() + ":" + String.format("%.2f",cardlist.get(i).getShape().getArea()) + " "); cardSort(); System.out.println("\nThe sorted list:"); for(int i = 0;i < cardlist.size();i++) System.out.print(cardlist.get(i).getShape().getShapeName() + ":" + String.format("%.2f",cardlist.get(i).getShape().getArea()) + " "); System.out.println("\nSum of area:" + String.format("%.2f",getAllArea())); } } public class Main { //在Main类中定义一个静态Scanner对象,这样在其它类中如果想要使用该对象进行输入,则直接 //使用Main.input.next…即可(避免采坑) public static Scanner input = new Scanner(System.in); public static void main(String[] args){ ArrayList<Integer> list = new ArrayList<Integer>(); int num = input.nextInt(); while(num != 0){ if(num < 0 || num > 4){ System.out.println("Wrong Format"); System.exit(0); } list.add(num); num = input.nextInt(); } DealCardList dealCardList = new DealCardList(list); if(!dealCardList.validate()){ System.out.println("Wrong Format"); System.exit(0); } dealCardList.showResult(); input.close(); } }
类图设计:

题目集7(7-2):
import java.util.*; class Card implements Comparable<Card>{ private Shape shape; Card() { } Card(Shape shape) { this.shape = shape; } public Shape getShape() { return shape; } public void setShape(Shape shape) { this.shape = shape; } @Override public int compareTo(Card card) { if(shape.getArea() < card.getShape().getArea()) return 1; else if(shape.getArea() > card.getShape().getArea()) return -1; return 0; } } abstract class Shape { private String shapeName; Shape() { } Shape(String shapeName) { this.shapeName = shapeName; } public String getShapeName() { return shapeName; } public void setShapeName(String shapeName) { this.shapeName = shapeName; } public double getArea() { return 0; } public boolean validate() { return true; } public String toString() { return "lin"; } } class Trapezoid extends Shape { private double topSide; private double bottonSide; private double height; Trapezoid() { } Trapezoid(double topSide,double bottonSide,double height) { this.topSide = topSide; this.bottonSide = bottonSide; this.height = height; super.setShapeName("Trapezoid"); } public double getTopSide() { return topSide; } public void setTopSide(double topSide) { this.topSide = topSide; } public double getBottonSide() { return bottonSide; } public void setBottonSide(double bottonSide) { this.bottonSide = bottonSide; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } @Override public double getArea() { return (this.topSide + this.bottonSide)*this.height/2; } @Override public boolean validate() { if(this.topSide <= 0 || this.bottonSide <= 0 || this.height <= 0) return false; return true; } } class Circle extends Shape { private double radius; Circle(){ } Circle(double radius){ this.radius = radius; super.setShapeName("Circle"); } @Override public double getArea() { return Math.PI*this.radius*this.radius; } @Override public boolean validate() { if(this.radius <= 0) return false; return true; } } class Rectangle extends Shape { private double width; private double length; Rectangle() { } Rectangle(double width,double length) { this.width = width; this.length = length; super.setShapeName("Rectangle"); } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getLength() { return length; } public void setLength(double length) { this.length = length; } @Override public double getArea() { return this.width*this.length; } @Override public boolean validate() { if(this.width <= 0 || this.length <= 0) return false; return true; } } class Triangle extends Shape { private double side1; private double side2; private double side3; Triangle() { } Triangle(double side1,double side2,double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; super.setShapeName("Triangle"); } @Override public double getArea() { return (1.0/4.0)*Math.sqrt((this.side1+this.side2+this.side3)*(this.side1+this.side2-this.side3)*(this.side1+this.side3-this.side2)*(this.side2+this.side3-this.side1)); } @Override public boolean validate() { if(this.side1 + this.side2 <= this.side3 || this.side1 + this.side3 <= this.side2 || this.side2 + this.side3 <= this.side1) return false; return true; } } class DealCardList { Scanner input = new Scanner(System.in); private ArrayList<Card> cardlist = new ArrayList<Card>(); DealCardList() { } DealCardList(ArrayList<Integer> list) { for(int i = 0;i < list.size();i++) { switch(list.get(i)) { case 1: cardlist.add(new Card( new Circle( Main.input.nextDouble() ) ));break; case 2: cardlist.add(new Card( new Rectangle( Main.input.nextDouble(),Main.input.nextDouble() ) ));break; case 3: cardlist.add(new Card( new Triangle( Main.input.nextDouble(),Main.input.nextDouble(),Main.input.nextDouble() ) ));break; case 4: cardlist.add(new Card( new Trapezoid( Main.input.nextDouble(),Main.input.nextDouble(),Main.input.nextDouble() ) ));break; } } } public boolean validate() { if(cardlist.size() == 0) return false; for(int i = 0;i < cardlist.size();i++) { if(!cardlist.get(i).getShape().validate()) return false; } return true; } public void cardSort() { Collections.sort(cardlist); } public double getAllArea() { double num = 0; for(int i = 0;i < cardlist.size();i++) { num += cardlist.get(i).getShape().getArea(); } return num; } public void showResult(ArrayList<Integer> list) { System.out.println("The original list:"); System.out.print("["); for(int i = 0;i < cardlist.size();i++) { System.out.print(cardlist.get(i).getShape().getShapeName() + ":" + String.format("%.2f",cardlist.get(i).getShape().getArea()) + " "); } System.out.print("]"); ArrayList<Card> card1 = new ArrayList<Card>(); ArrayList<Card> card2 = new ArrayList<Card>(); ArrayList<Card> card3 = new ArrayList<Card>(); ArrayList<Card> card4 = new ArrayList<Card>(); for(int i = 0;i < list.size();i++) { switch(list.get(i)) { case 1: card1.add(cardlist.get(i));break; case 2: card2.add(cardlist.get(i));break; case 3: card3.add(cardlist.get(i));break; case 4: card4.add(cardlist.get(i));break; } } System.out.println("\nThe Separated List:"); System.out.print("["); for(int i = 0;i < card1.size();i++) { System.out.print(card1.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card1.get(i).getShape().getArea()) + " "); } System.out.print("]"); System.out.print("["); for(int i = 0;i < card2.size();i++) { System.out.print(card2.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card2.get(i).getShape().getArea()) + " "); } System.out.print("]"); System.out.print("["); for(int i = 0;i < card3.size();i++) { System.out.print(card3.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card3.get(i).getShape().getArea()) + " "); } System.out.print("]"); System.out.print("["); for(int i = 0;i < card4.size();i++) { System.out.print(card4.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card4.get(i).getShape().getArea()) + " "); } System.out.print("]"); Comparator m = new Comparator<Card>() { @Override public int compare(Card card1,Card card2) { if(card1.getShape().getArea() < card2.getShape().getArea()) return 1; else if(card1.getShape().getArea() > card2.getShape().getArea()) return -1; return 0; } }; card1.sort(m); card2.sort(m); card3.sort(m); card4.sort(m); System.out.println("\nThe Separated sorted List:"); System.out.print("["); for(int i = 0;i < card1.size();i++) { System.out.print(card1.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card1.get(i).getShape().getArea()) + " "); } System.out.print("]"); System.out.print("["); for(int i = 0;i < card2.size();i++) { System.out.print(card2.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card2.get(i).getShape().getArea()) + " "); } System.out.print("]"); System.out.print("["); for(int i = 0;i < card3.size();i++) { System.out.print(card3.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card3.get(i).getShape().getArea()) + " "); } System.out.print("]"); System.out.print("["); for(int i = 0;i < card4.size();i++) { System.out.print(card4.get(i).getShape().getShapeName() + ":" + String.format("%.2f",card4.get(i).getShape().getArea()) + " "); } System.out.print("]"); double num1 = 0; double num2 = 0; double num3 = 0; double num4 = 0; for(int i = 0;i < card1.size();i++) num1 += card1.get(i).getShape().getArea(); for(int i = 0;i < card2.size();i++) num2 += card2.get(i).getShape().getArea(); for(int i = 0;i < card3.size();i++) num3 += card3.get(i).getShape().getArea(); for(int i = 0;i < card4.size();i++) num4 += card4.get(i).getShape().getArea(); double num = 0; if(num < num1) num = num1; if(num < num2) num = num2; if(num < num3) num = num3; if(num < num4) num = num4; System.out.println("\nThe max area:" + String.format("%.2f",num)); } } public class Main { //在Main类中定义一个静态Scanner对象,这样在其它类中如果想要使用该对象进行输入,则直接 //使用Main.input.next…即可(避免采坑) public static Scanner input = new Scanner(System.in); public static void main(String[] args){ ArrayList<Integer> list = new ArrayList<Integer>(); int num = input.nextInt(); while(num != 0){ if(num < 0 || num > 4){ System.out.println("Wrong Format"); System.exit(0); } list.add(num); num = input.nextInt(); } DealCardList dealCardList = new DealCardList(list); if(!dealCardList.validate()){ System.out.println("Wrong Format"); System.exit(0); } dealCardList.showResult(list); input.close(); } }
②题目集8,题目集9两道ATM仿真题目设计思路分析总结
老规矩,先贴代码:
题目集8:
import java.util.*; public class Main { public static Scanner input = new Scanner(System.in); public static void main(String[] args) { StringBuilder a = new StringBuilder(); String str = new String(); while(!str.equals("#")) { str = input.nextLine(); a.append("\n").append(str); } operate s = new operate(a); s.caozuo(); } } class Card{ String cardNumber; String password; Account account; Bank bank; public Card() { } public Card(String cardNumber,String password,Account account,Bank bank) { this.cardNumber=cardNumber; this.password=password; this.account=account; this.bank=bank; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getCardNumber() { return cardNumber; } public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; } public Account getAccount() { return account; } public void setAccount(Account account) { this.account = account; } public Bank getBank() { return bank; } public void setBank(Bank bank) { this.bank = bank; } } class Account{ String accountName; String accountNumber; double money; public Account() { } public Account(String accountName,String accountNumber,double money) { this.money=money; this.accountName=accountName; this.accountNumber=accountNumber; } public String getAccountName() { return accountName; } public void setAccountName(String accountName) { this.accountName = accountName; } public String getAccountNumber() { return accountNumber; } public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } } class Bank{ String bankName; String[] atm; public Bank() { } public Bank(String bankName,String[] atm) { this.bankName=bankName; this.atm=atm; } public String getBankName() { return bankName; } public void setBankName(String bankName) { this.bankName = bankName; } public String[] getAtm() { return atm; } public void setAtm(String[] atm) { this.atm = atm; } } class operate{ StringBuilder a; ArrayList<Account> accountList; String[] atm1 = {"01","02","03","04"}; Bank jsyh = new Bank("中国建设银行", atm1); String[] atm2 = {"05","06"}; Bank gsyh = new Bank("中国工商银行", atm2); Account yang1=new Account("杨过","3217000010041315709",10000); Account yang2=new Account("杨过","3217000010041315715",10000); Account guo1=new Account("郭靖","3217000010051320007",10000); Account zhang1=new Account("张无忌","3222081502001312389",10000); Account zhang2=new Account("张无忌","3222081502001312390",10000); Account zhang3=new Account("张无忌","3222081502001312399",10000); Account wei1=new Account("韦小宝","322208150205132785",10000); Account wei2=new Account("韦小宝","322208150205132786",10000); Card card1=new Card("6217000010041315709","88888888",yang1,jsyh); Card card2=new Card("6217000010041315715","88888888",yang1,jsyh); Card card3=new Card("6217000010041315718","88888888",yang2,jsyh); Card card4=new Card("6217000010051320007","88888888",guo1,jsyh); Card card5=new Card("6222081502001312389","88888888",zhang1,gsyh); Card card6=new Card("6222081502001312390","88888888",zhang1,gsyh); Card card7=new Card("6222081502001312399","88888888",zhang2,gsyh); Card card8=new Card("6222081502001312400","88888888",zhang2,gsyh); Card card9=new Card("622208150205132785","88888888",wei1,gsyh); Card card10=new Card("622208150205132786","88888888",wei2,gsyh); Card[] cardlist= {card1,card2,card3,card4,card5,card6,card7,card8,card9,card10}; public operate(StringBuilder a) { this.a = a; } public void caozuo() { String s = a.toString(); String[] str = s.split("\n"); for(int i = 0;i < str.length;i++) { int m=-1; String[] str1=str[i].split(" +"); for(int k=0;k<10;k++) { if(cardlist[k].getCardNumber().equals(str1[0])) { m=i; } } if(m==-1) { System.out.print("Sorry,this card does not exist."); return; } if(str.length==1) { System.out.print("¥"+cardlist[m].getAccount().getMoney()); continue; } if(!cardlist[m].getPassword().equals(str[1])) { System.out.print("Sorry,your password is wrong."); return; } if(cardlist[m].getAccount().getMoney()<Double.parseDouble(str[3])) { System.out.print("Sorry,your account balance is insufficient."); return ; } int z=-1; for(int j=0;j<cardlist[j].getBank().getAtm().length;j++) { if(cardlist[m].getBank().getAtm()[j].equals(str[2])) { z=1; } else if(z==-1) { System.out.print("“Sorry,cross-bank withdrawal is not supported."); return; } } if(!str[2].equals("01")&&!str[2].equals("02")&&!str[2].equals("03")&&!str[2].equals("04")&&!str[2].equals("05")&&!str[2].equals("06")) { System.out.print("Sorry,the ATM's id is wrong."); return; } if(Double.parseDouble(str[3])<0) { System.out.println(cardlist[m].getAccount().getAccountName()+"在"+cardlist[m].getBank().getBankName()+"的"+str[2]+"上存款"+"¥"+Math.abs(Double.parseDouble(str[3]))); System.out.println("当前余额为¥" + String.format("%.2f", cardlist[m].getAccount().getMoney())); } else if(Double.parseDouble(str[3])>0) { System.out.println(cardlist[m].getAccount().getAccountName()+"在"+cardlist[m].getBank().getBankName()+"的"+str[2]+"上取款"+"¥"+Math.abs(Double.parseDouble(str[3]))); System.out.println("当前余额为¥" + String.format("%.2f", cardlist[m].getAccount().getMoney())); } } } public StringBuilder getA() { return a; } public void setA(StringBuilder a) { this.a = a; } }
题目集9:
import java.util.*; class Card { private String cardNumber; private String password; private Account account; private Bank bank; public Card() { this.cardNumber = "default cardnumber"; this.password = "88888888"; } public Card(String cardNumber,String password,Account account,Bank bank) { this.cardNumber = cardNumber; this.password = password; this.account = account; this.bank = bank; } public String getCardNumber() { return cardNumber; } public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Account getAccount() { return account; } public void setAccount(Account account) { this.account = account; } public Bank getBank() { return bank; } public void setBank(Bank bank) { this.bank = bank; } } class Account { private String accountName; private String accountNumber; private double balance; private String type; public Account() { this.accountName = "default accountname"; this.accountNumber = "default accountnumber"; this.balance = 10000; } public Account(String accountName,String accountNumber,String type) { this.accountName = accountName; this.accountNumber = accountNumber; this.balance = 10000; this.type = type; /* * for(int i = 0;i < card.length;i++) { //card[i] = new Card(); this.card[i] = * card[i]; } */ } public String getAccountName() { return accountName; } public void setAccountName(String accountName) { this.accountName = accountName; } public String getAccountNumber() { return accountNumber; } public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public String getType() { return type; } public void setType(String type) { this.type = type; } } class Bank { private String bankName; private String[] atm = new String[10]; private double percent; public Bank() { this.bankName = "default bankname"; } public Bank(String bankName,String[] atm,double percent) { this.bankName = bankName; this.atm = atm; this.percent = percent; } public String getBankName() { return bankName; } public void setBankName(String bankName) { this.bankName = bankName; } public String[] getAtm() { return atm; } public void setAtm(String[] atm) { this.atm = atm; } public double getPercent() { return percent; } public void setPercent(double percent) { this.percent = percent; } } class Operate { Bank jianshe = new Bank("中国建设银行",new String[] {"01","02","03","04"},0.02); Bank gongshang = new Bank("中国工商银行",new String[] {"05","06"},0.03); Bank nongye = new Bank("中国农业银行",new String[] {"07","08","09","10","11"},0.04); Account yang1 = new Account("杨过","3217000010041315709","借记"); Account yang2 = new Account("杨过","3217000010041315715","借记"); Account guo = new Account("郭靖","3217000010051320007","借记"); Account zhang1 = new Account("张无忌","3222081502001312389","借记"); Account zhang2 = new Account("张无忌","3222081502001312390","借记"); Account zhang3 = new Account("张无忌","3222081502001312399","借记"); Account wei1 = new Account("韦小宝","3222081502051320785","借记"); Account wei2 = new Account("韦小宝","3222081502051320786","借记"); Account zhang10 = new Account("张三丰","3640000010045442002","贷记"); Account ling = new Account("令狐冲","3640000010045441009","贷记"); Account qiao = new Account("乔峰","3640000010033431001","贷记"); Account hong = new Account("洪七公","3640000010033431008","贷记"); Card yangCard1 = new Card("6217000010041315709","88888888",yang1,jianshe); Card yangCard2 = new Card("6217000010041315715","88888888",yang1,jianshe); Card yangCard3 = new Card("6217000010041315718","88888888",yang2,jianshe); Card guoCard = new Card("6217000010051320007","88888888",guo,jianshe); Card zhangCard1 = new Card("6222081502001312389","88888888",zhang1,gongshang); Card zhangCard2 = new Card("6222081502001312390","88888888",zhang2,gongshang); Card zhangCard3 = new Card("6222081502001312399","88888888",zhang3,gongshang); Card zhangCard4 = new Card("6222081502001312400","88888888",zhang3,gongshang); Card weiCard1 = new Card("6222081502051320785","88888888",wei1,gongshang); Card weiCard2 = new Card("6222081502051320786","88888888",wei2,gongshang); Card zhangCard11 = new Card("6640000010045442002","88888888",zhang10,jianshe); Card zhangCard12 = new Card("6640000010045442003","88888888",zhang10,jianshe); Card lingCard = new Card("6640000010045441009","88888888",ling,gongshang); Card qiaoCard = new Card("6630000010033431001","88888888",qiao,nongye); Card hongCard = new Card("6630000010033431008","88888888",hong,nongye); Card[] cardList = {yangCard1,yangCard2,yangCard3,guoCard,zhangCard1,zhangCard2,zhangCard3,zhangCard4,weiCard1,weiCard2,zhangCard11,zhangCard12,lingCard,qiaoCard,hongCard}; StringBuilder an = new StringBuilder(); public Operate() { } public Operate(StringBuilder an) { this.an.append(an.toString()); } public String setMoney(Card card,double money,String atm) { double qvkuan = 0; double jiekuan = 0; String bankname = new String("unknown"); String[] jianshe = {"01","02","03","04"}; String[] gongshang = {"05","06"}; String[] nongye = {"07","08","09","10","11"}; boolean flag = true; while(flag) { flag = false; int k = 0; for(int i = 0;i < card.getBank().getAtm().length;i++) { if(!atm.equals(card.getBank().getAtm()[i])) k++; } if(k == card.getBank().getAtm().length - 1) { qvkuan = 0; bankname = card.getBank().getBankName(); break; } if(!jianshe[0].equals(card.getBank().getAtm()[0])) { k = 0; for(int i = 0;i < gongshang.length;i++) { if(!atm.equals(gongshang[i])) k++; } if(k == gongshang.length - 1) { qvkuan = 0.03; bankname = "中国工商银行"; break; } k = 0; for(int i = 0;i < nongye.length;i++) { if(!atm.equals(nongye[i])) k++; } if(k == nongye.length - 1) { qvkuan = 0.04; bankname = "中国农业银行"; break; } } if(!gongshang[0].equals(card.getBank().getAtm()[0])) { k = 0; for(int i = 0;i < jianshe.length;i++) { if(!atm.equals(jianshe[i])) k++; } if(k == jianshe.length - 1) { qvkuan = 0.02; bankname = "中国建设银行"; break; } k = 0; for(int i = 0;i < nongye.length;i++) { if(!atm.equals(nongye[i])) k++; } if(k == nongye.length - 1) { qvkuan = 0.04; bankname = "中国农业银行"; break; } } if(!nongye[0].equals(card.getBank().getAtm()[0])) { k = 0; for(int i = 0;i < gongshang.length;i++) { if(!atm.equals(gongshang[i])) k++; } if(k == gongshang.length - 1) { qvkuan = 0.03; bankname = "中国工商银行"; break; } k = 0; for(int i = 0;i < jianshe.length;i++) { if(!atm.equals(jianshe[i])) k++; } if(k == jianshe.length - 1) { qvkuan = 0.02; bankname = "中国建设银行"; break; } } } if (card.getAccount().getBalance() < money) jiekuan = 0.05; if(card.getAccount().getBalance() >= 0) card.getAccount().setBalance(card.getAccount().getBalance() - money - jiekuan*(Math.abs(card.getAccount().getBalance() - money)) - qvkuan*money); else if(card.getAccount().getBalance() < 0) card.getAccount().setBalance(card.getAccount().getBalance() - money - jiekuan*money - qvkuan*money); return bankname; } public boolean validate(String[] zu,int m) { if(!zu[2].equals("01") && !zu[2].equals("02") && !zu[2].equals("03") && !zu[2].equals("04") && !zu[2].equals("05") && !zu[2].equals("06") && !zu[2].equals("07") && !zu[2].equals("08") && !zu[2].equals("09") && !zu[2].equals("10") && !zu[2].equals("11")) { System.out.println("Sorry,the ATM's id is wrong."); return false; } if(!zu[1].equals( cardList[m].getPassword() )) { System.out.println("Sorry,your password is wrong."); return false; } if(cardList[m].getAccount().getType().equals("借记") && cardList[m].getAccount().getBalance() < 0) { System.out.println("Sorry,your account balance is insufficient."); return false; } if(cardList[m].getAccount().getType().equals("贷记") && cardList[m].getAccount().getBalance() < -50000) { System.out.println("Sorry,your account balance is insufficient."); return false; } return true; } public int findCard(String cardnumber) { int i = 0; while(!cardList[i].getCardNumber().equals(cardnumber)){ i++; if(i == cardList.length) return -1; } return i; } public void operate() { String s = an.toString(); String str[] = s.split("\n"); for(int i = 0;i < str.length;i++) { String zu[] = str[i].split(" +"); int m = findCard(zu[0]); if(m == -1) { System.out.println("Sorry,this card does not exist."); return; } if(zu.length == 1) { System.out.println("业务:查询余额 ¥" + String.format("%.2f", cardList[m].getAccount().getBalance())); continue; } String bankname = setMoney(cardList[m],Double.parseDouble(zu[3]),zu[2]); if( !validate(zu,m) ) { return; } if(Double.parseDouble(zu[3]) < 0) { // saving(cardList[m].getAccount(),Double.parseDouble(zu[3])); System.out.println("业务:存款 " + cardList[m].getAccount().getAccountName() + "在" + bankname + "的" + zu[2] + "号ATM机上存款¥" + String.format("%.2f",Math.abs(Double.parseDouble(zu[3])))); System.out.println("当前余额为¥" + String.format("%.2f", cardList[m].getAccount().getBalance())); } else if(Double.parseDouble(zu[3]) > 0) { // taking(cardList[m].getAccount(),Double.parseDouble(zu[3])); System.out.println("业务:取款 " + cardList[m].getAccount().getAccountName() + "在" + bankname + "的" + zu[2] + "号ATM机上取款¥" + String.format("%.2f",Math.abs(Double.parseDouble(zu[3])))); System.out.println("当前余额为¥" + String.format("%.2f", cardList[m].getAccount().getBalance())); } } } } public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); StringBuilder a = new StringBuilder(in.nextLine()); String b = in.nextLine(); while( !b.equals("#") ) { a.append('\n').append(b); b = in.nextLine(); } Operate operate = new Operate(a); operate.operate(); } }
三、踩坑心得
这三次作业还是不难的,首次不踩坑,好耶!
四、总结
这三次题目集我是真切的感受到了Java的魅力,通过对类结构一系列的设计能简化许多很麻烦的操作,收获还是很大的,但是到现在的学习还是不够,对Java的理解还是不够透彻,多操作多实践多提问才能更好学习和研究。

浙公网安备 33010602011771号