Blog作业03

题目集7~9总结

1.前言

  ①题目集07:共有两题,两题难易度差不多。其中第一题为图形卡片排序游戏,其中该题主要运用了继承多态等方面的只是,还运用到了Comparable 接口的应用,知识点属于较难的,且有些是第一次使用,这题与之前的图形题目加了排序功能,比较新颖。第二题为图形卡片分组游戏,该题也是运用了继承多态方面的知识和Comparable、Comparator 接口的应用,这一题和上一题相比,需要为图形卡片分组,难度也没有提升多少,就是思路需要有些改变。这两题继承和接口两方面的知识起到了很大的作用。

  ②题目集08:只有一题,但这题与前面所有的题目集相比,难度可以说是最大的,代码也是最繁琐的。该题要求编写一个银行 ATM 机的模拟程序,能够完成用户的存款、取款以及查询余额功能。其中银行,用户,ATM机都初始化了。并且这题运用的知识也非常广泛,占了这学期学的内容很大一部分。

  ③题目集09:只有一题,这题可以说是08题目集的升级版,这题为ATM机类结构设计(二),代码也比上一题繁琐一些。该题要求编写一个银行 ATM 机的模拟程序,能够完成用户的取款以及查询余额功能。并且相较于上一题,还多了一些功能。银行账户分为借记账户和贷记账户两种,其中,借记账户不能够透支 取款,而贷记账户可以透支取款(可能需要支付手续费)。根据账户 的不同,银行卡一般分为借记卡(针对借记账户)和信用卡(针对贷记账户) 两类。这些要求大大加大了难度,运用的知识也不比上一题少。

2.设计与分析

  (1)此次题目集07的两题图形卡片的题目,7-01,7-02。这里对这两个题目进行分析。

    这两题难易度都差不多,只是需要把握对接口的掌控。以下为代码。

    

import java.util.Scanner;
import java.util.List;
import java.util.Arrays;
import java.util.Comparator;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner m=new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
int num = m.nextInt();
if(num==0) {
System.out.println("Wrong Format");
System.exit(0);
}
while(num != 0){
if(num < 0 || num > 4){
System.out.println("Wrong Format");
System.exit(0);
}
list.add(num);
num = m.nextInt();
}
int o=0;
int p=0;
int q=0;
int r=0;
ArrayList<Double> list1 =new ArrayList<>();
for(int i=0;i<list.size();i++) {
if(list.get(i)==1) {
o++;
if(o!=0) {
double e1=m.nextDouble();
Circle u=new Circle();
u.setRadius(e1);
list1.add(u.getArea());
}
}
if(list.get(i)==2) {
p++;
if(p!=0) {
double e1=m.nextDouble();
double e2=m.nextDouble();
Rectangle u=new Rectangle();
u.setWidth(e1);
u.setLength(e2);
list1.add(u.getArea());
}
}
if(list.get(i)==3) {
q++;
if(q!=0) {
double e1=m.nextDouble();
double e2=m.nextDouble();
double e3=m.nextDouble();
Triangle u=new Triangle();
u.setSide1(e1);
u.setSide2(e2);
u.setSide3(e3);
list1.add(u.getArea());
}
}
if(list.get(i)==4) {
r++;
if(r!=0) {
double e1=m.nextDouble();
double e2=m.nextDouble();
double e3=m.nextDouble();
Trapezoid u=new Trapezoid();
u.setTop(e1);
u.setD(e2);
u.setHeight(e3);
list1.add(u.getArea());
}
}
}
if(o<0||p<0||q<0||r<0) {
System.out.println("Wrong Format");
}
else {
ArrayList<Double> list2 =new ArrayList<>();
ArrayList<Double> list3 =new ArrayList<>();
ArrayList<Double> list4 =new ArrayList<>();
ArrayList<Double> list5 =new ArrayList<>();
System.out.println("The original list:");
System.out.print("[");
for(int i=0;i<list1.size();i++) {
if(list.get(i)==1) {
System.out.print("Circle:"+String.format("%.2f",list1.get(i))+" ");
list2.add(list1.get(i));
}
if(list.get(i)==2) {
System.out.print("Rectangle:"+String.format("%.2f",list1.get(i))+" ");
list3.add(list1.get(i));
}
if(list.get(i)==3) {
System.out.print("Triangle:"+String.format("%.2f",list1.get(i))+" ");
list4.add(list1.get(i));
}
if(list.get(i)==4) {
System.out.print("Trapezoid:"+String.format("%.2f",list1.get(i))+" ");
list5.add(list1.get(i));
}
}
System.out.print("]");
System.out.println();
System.out.println("The Separated List:");
System.out.print("[");
for(int i=0;i<list2.size();i++) {
System.out.print("Circle:"+String.format("%.2f",list2.get(i))+" ");
}
System.out.print("]");
System.out.print("[");
for(int i=0;i<list3.size();i++) {
System.out.print("Rectangle:"+String.format("%.2f",list3.get(i))+" ");
}
System.out.print("]");
System.out.print("[");
for(int i=0;i<list4.size();i++) {
System.out.print("Triangle:"+String.format("%.2f",list4.get(i))+" ");
}
System.out.print("]");
System.out.print("[");
for(int i=0;i<list5.size();i++) {
System.out.print("Trapezoid:"+String.format("%.2f",list5.get(i))+" ");
}
System.out.print("]");
System.out.println();
System.out.println("The Separated sorted List:");
list2.sort(Comparator.reverseOrder());
list3.sort(Comparator.reverseOrder());
list4.sort(Comparator.reverseOrder());
list5.sort(Comparator.reverseOrder());
System.out.print("[");
for(int i=0;i<list2.size();i++) {
System.out.print("Circle:"+String.format("%.2f",list2.get(i))+" ");
}
System.out.print("]");
System.out.print("[");
for(int i=0;i<list3.size();i++) {
System.out.print("Rectangle:"+String.format("%.2f",list3.get(i))+" ");
}
System.out.print("]");
System.out.print("[");
for(int i=0;i<list4.size();i++) {
System.out.print("Triangle:"+String.format("%.2f",list4.get(i))+" ");
}
System.out.print("]");
System.out.print("[");
for(int i=0;i<list5.size();i++) {
System.out.print("Trapezoid:"+String.format("%.2f",list5.get(i))+" ");
}
System.out.print("]");
double sum=0;
double sum1=0;
double sum2=0;
double sum3=0;
for(int i=0;i<list2.size();i++) {
sum+=list2.get(i);
}
for(int i=0;i<list3.size();i++) {
sum1+=list3.get(i);
}
for(int i=0;i<list4.size();i++) {
sum2+=list4.get(i);
}
for(int i=0;i<list5.size();i++) {
sum3+=list5.get(i);
}
double [] maxxx=new double[4];
maxxx[0]=sum;
maxxx[1]=sum1;
maxxx[2]=sum2;
maxxx[3]=sum3;
double maxx=maxxx[0];
for(int i=0;i<4;i++) {
if(maxx<maxxx[i]) {
maxx=maxxx[i];
}
}
System.out.println();
System.out.println("The max area:"+String.format("%.2f",maxx));
}
}
}
class Shape{
public double getArea() {
return 0.0;
}
public boolean validate() {
return true;
}
}
class Circle extends Shape {
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
private double radius;
public boolean validate() {
if(radius<0) {
return false;
}
else
return true;
}
public double getArea(){
double x=0;
x=Math.PI*radius*radius;
return x;
}
}
class Rectangle extends Shape {
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;
}
private double width;
private double length;
public boolean validate() {
if(width<0||length<0) {
return false;
}
else
return true;
}
public double getArea() {
double x=0;
x=width*length;
return x;
}
}
class Triangle extends Shape {
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) {
this.side3 = side3;
}
private double side1;
private double side2;
private double side3;
public boolean validate() {
if((side1+side2)<=side3||(side1+side3)<=side2||(side2+side3)<=side1||side1<0||side2<0||side3<0) {
return false;
}
else
return true;
}
public double getArea() {
double x=0;
double p=(side1+side2+side3)/2;
x=Math.sqrt(p*(p-side1)*(p-side2)*(p-side3));
return x;
}
}
class Trapezoid extends Shape{
private double height;
private double top;
private double d;
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getTop() {
return top;
}
public void setTop(double top) {
this.top = top;
}
public double getD() {
return d;
}
public void setD(double d) {
this.d = d;
}
public double getArea() {
double x=0;
x=((top+d)*height)/2;
return x;
}
}

(2)题目集08和09相似,只是09在08上加了一些功能,使代码变得繁琐了一些。

以下为08的代码。

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//写多个类
Scanner m=new Scanner(System.in);
String mm;
mm=m.nextLine();
String[] temp=mm.split("\\s+");
ArrayList<User> z1 = new ArrayList<User>();
ArrayList<ATM> z2 = new ArrayList<ATM>();
ArrayList<String> z3 = new ArrayList<>();
String jkl=null;
while(!temp[0].equals("#")) {
if(temp.length==4&&temp[1].equals("88888888")) {
double x=Double.parseDouble(temp[3]);
if(x>10000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
User u=new User();
u.setKexi(x);
u.setAccount(temp[0]);
if(u.vau()==false) {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
ATM r=new ATM();
r.setNumber(temp[2]);
if(r.clear()==false) {
System.out.println("Sorry,the ATM's id is wrong.");
System.exit(0);
}
u.vauser();
if(u.validatejs(r, u)==false&&u.validategs(r, u)==false){
System.out.println("Sorry,cross-bank withdrawal is not supported.");
System.exit(0);
}
if(u.validatejs(r, u)==true) {
if(x<0) {
u.good(x);
}
if(x>0) {
u.good(x);
}
}
if(u.validategs(r, u)==true) {
if(x<0) {
u.good(x);
}
if(x>0) {
u.good(x);
}
}
z1.add(u);
z2.add(r);
mm=m.nextLine();
temp=mm.split("\\s+");
}
else if(temp.length==1) {
jkl=temp[0];
//z3.add(temp[0]);
mm=m.nextLine();
temp=mm.split("\\s+");
System.out.println("¥10000.00");
System.exit(0);;
}
else {
System.out.println("Sorry,your password is wrong.");
System.exit(0);
}
}
/*for(int i=0;i<z1.size();i++) {
if(z1.get(i).getAccount().equals("6217000010041315709")||z1.get(i).getAccount().equals("6217000010041315715")||z1.get(i).getAccount().equals("6217000010041315718")||z1.get(i).getAccount().equals("6217000010051320007")
||z1.get(i).getAccount().equals("6222081502001312389")||z1.get(i).getAccount().equals("6222081502001312390")||z1.get(i).getAccount().equals("6222081502001312399")||z1.get(i).getAccount().equals("6222081502001312400")
||z1.get(i).getAccount().equals("6222081502051320785")||z1.get(i).getAccount().equals("6222081502051320786")) {

}
else {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}*/
for(int i=0;i<z1.size();i++) {
if(z1.get(i).validatejs(z2.get(i), z1.get(i))==true||z1.get(i).validategs(z2.get(i), z1.get(i))==true){

}
else {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}
for(int i=0;i<z1.size();i++) {
if(z1.get(i).validatejs(z2.get(i), z1.get(i))==true) {
if(z1.get(i).getKexi()>0) {
System.out.println(z1.get(i).getUser()+"在中国建设银行的"+z2.get(i).getNumber()+"号ATM机上取款¥"+String.format("%.2f",z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
if(z1.get(i).getKexi()<0) {
System.out.println(z1.get(i).getUser()+"在中国建设银行的"+z2.get(i).getNumber()+"号ATM机上存款¥"+String.format("%.2f",-z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
}
if(z1.get(i).validategs(z2.get(i), z1.get(i))==true) {
if(z1.get(i).getKexi()>0) {
System.out.println(z1.get(i).getUser()+"在中国工商银行的"+z2.get(i).getNumber()+"号ATM机上取款¥"+String.format("%.2f",z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
if(z1.get(i).getKexi()<0) {
System.out.println(z1.get(i).getUser()+"在中国工商银行的"+z2.get(i).getNumber()+"号ATM机上存款¥"+String.format("%.2f",-z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
}

}
for(int i=0;i<z1.size();i++) {
if(z1.get(i).getAccount().equals(jkl)) {
System.out.println("¥"+String.format("%.2f",z1.get(i).getBalance()));
}
/*else {
System.out.println("¥10000.00");
}*/
}

}
}
class User{
private double kexi;
public double getKexi() {
return kexi;
}
public void setKexi(double kexi) {
this.kexi = kexi;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String account;//卡号
private String password="88888888";
private double balance=10000.00;
public boolean vau(){
if(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")||account.equals("6217000010051320007")
||account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")
||account.equals("6222081502051320785")||account.equals("6222081502051320786")) {
return true;
}
else {
return false;
}
}
public double good(double x) {
balance=balance-x;
return balance;
}
public void vauser() {
if(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")) {
user="杨过";
}
if(account.equals("6217000010051320007")) {
user="郭靖";
}
if(account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")) {
user="张无忌";
}
if(account.equals("6222081502051320785")||account.equals("6222081502051320786")) {
user="韦小宝";
}
}
public boolean vajs() {
if((user.equals("杨过")&&(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")))||
(user.equals("郭靖")&&account.equals("6217000010051320007"))) {
return true;
}
else {
return false;
}
}
public boolean vags() {
if((user.equals("张无忌")&&(account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")))||
(user.equals("韦小宝")&&(account.equals("6222081502051320785")||account.equals("6222081502051320786")))) {
return true;
}
else {
return false;
}
}
public boolean validatejs(ATM atm, User user) {
if(atm.va1()==true&&user.vajs()==true) {
return true;
}
else {
return false;
}
}
public boolean validategs(ATM atm,User user) {
if(atm.va2()==true&&user.vags()==true) {
return true;
}
else {
return false;
}
}
}
class ATM{
private String number;//编号

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}
public boolean clear() {
if(number.equals("01")||number.equals("02")||number.equals("03")||number.equals("04")||number.equals("05")||number.equals("06")) {
return true;
}
else {
return false;
}
}
public boolean va1() {
if(number.equals("01")||number.equals("02")||number.equals("03")||number.equals("04")) {
return true;
}
else {
return false;
}
}
public boolean va2() {
if(number.equals("05")||number.equals("06")) {
return true;
}
else {
return false;
}
}
}

以下为09的代码

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//写多个类
Scanner m=new Scanner(System.in);
String mm;
mm=m.nextLine();
String[] temp=mm.split("\\s+");
ArrayList<User> z1 = new ArrayList<User>();
ArrayList<ATM> z2 = new ArrayList<ATM>();
ArrayList<String> z3 = new ArrayList<>();
String jkl=null;
while(!temp[0].equals("#")) {
if(temp.length==4&&temp[1].equals("88888888")) {
double x=Double.parseDouble(temp[3]);
if(x>10000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
User u=new User();
u.setKexi(x);
u.setAccount(temp[0]);
/*if(u.vau()==false) {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}*/
ATM r=new ATM();
r.setNumber(temp[2]);
if(r.clear()==false) {
System.out.println("Sorry,the ATM's id is wrong.");
System.exit(0);
}
u.vauser();
/*if(u.validatejs(r, u)==false&&u.validategs(r, u)==false&&u.validateny(r, u)==false){
System.out.println("Sorry,cross-bank withdrawal is not supported.");
System.exit(0);
}*/
/*if(u.validatejs(r, u)==true) {
if(x<0) {
u.good(x);
}
if(x>0) {
u.good(x);
}
}*/
/*if(u.validategs(r, u)==true) {
if(x<0) {
u.good(x);
}
if(x>0) {
u.good(x);
}
}*/
if(r.getNumber().equals("06")) {
u.good1(x);
System.out.println("业务:取款 "+u.getUser()+"在中国工商银行的"+r.getNumber()+"号ATM机上取款¥"+String.format("%.2f",u.getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",u.getBalance()));
}
z1.add(u);
z2.add(r);
mm=m.nextLine();
temp=mm.split("\\s+");
}
else if(temp.length==1) {

jkl=temp[0];
//z3.add(temp[0]);
mm=m.nextLine();
temp=mm.split("\\s+");
System.out.println("¥10000.00");
System.exit(0);;
}
else {
System.out.println("Sorry,your password is wrong.");
System.exit(0);
}
}
/*for(int i=0;i<z1.size();i++) {
if(z1.get(i).getAccount().equals("6217000010041315709")||z1.get(i).getAccount().equals("6217000010041315715")||z1.get(i).getAccount().equals("6217000010041315718")||z1.get(i).getAccount().equals("6217000010051320007")
||z1.get(i).getAccount().equals("6222081502001312389")||z1.get(i).getAccount().equals("6222081502001312390")||z1.get(i).getAccount().equals("6222081502001312399")||z1.get(i).getAccount().equals("6222081502001312400")
||z1.get(i).getAccount().equals("6222081502051320785")||z1.get(i).getAccount().equals("6222081502051320786")) {

}
else {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}*/
/*for(int i=0;i<z1.size();i++) {
if(z1.get(i).validatejs(z2.get(i), z1.get(i))==true||z1.get(i).validategs(z2.get(i), z1.get(i))==true||z1.get(i).validateny(z2.get(i), z1.get(i))==true){

}
else {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}*/
for(int i=0;i<z1.size();i++) {
if(z1.get(i).validatejs(z2.get(i), z1.get(i))==true) {
if(z1.get(i).getKexi()>0) {
System.out.println("业务:取款 "+z1.get(i).getUser()+"在中国建设银行的"+z2.get(i).getNumber()+"号ATM机上取款¥"+String.format("%.2f",z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
if(z1.get(i).getKexi()<0) {
System.out.println("业务:取款 "+z1.get(i).getUser()+"在中国建设银行的"+z2.get(i).getNumber()+"号ATM机上存款¥"+String.format("%.2f",-z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
}
if(z1.get(i).validategs(z2.get(i), z1.get(i))==true) {
if(z1.get(i).getKexi()>0) {
System.out.println("业务:取款 "+z1.get(i).getUser()+"在中国工商银行的"+z2.get(i).getNumber()+"号ATM机上取款¥"+String.format("%.2f",z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
if(z1.get(i).getKexi()<0) {
System.out.println("业务:取款 "+z1.get(i).getUser()+"在中国工商银行的"+z2.get(i).getNumber()+"号ATM机上存款¥"+String.format("%.2f",-z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
}
System.out.println();
}
for(int i=0;i<z1.size();i++) {
if(z1.get(i).getAccount().equals(jkl)) {
System.out.println("业务:查询余额 ¥"+String.format("%.2f",z1.get(i).getBalance()));
}
/*else {
System.out.println("¥10000.00");
}*/
}
}
}
class User{
private double kexi;
public double getKexi() {
return kexi;
}
public void setKexi(double kexi) {
this.kexi = kexi;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String account;//卡号
private String password="88888888";
private double balance=10000.00;
public boolean vau(){
if(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")||account.equals("6217000010051320007")
||account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")
||account.equals("6222081502051320785")||account.equals("6222081502051320786")||account.equals("6640000010045442002")||account.equals("6640000010045442003")
||account.equals("6640000010045441009")||account.equals("6630000010033431001")) {
return true;
}
else {
return false;
}
}
public double good(double x) {
balance=balance-x;
return balance;
}
public double good1(double x) {
balance=balance-x-0.03*x;
return balance;
}
public void vauser() {
if(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")) {
user="杨过";
}
if(account.equals("6217000010051320007")) {
user="郭靖";
}
if(account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")) {
user="张无忌";
}
if(account.equals("6222081502051320785")||account.equals("6222081502051320786")) {
user="韦小宝";
}
if(account.equals("6640000010045442002")||account.equals("6640000010045442003")) {
user="张三丰";
}
if(account.equals("6640000010045441009")) {
user="令狐冲";
}
if(account.equals("6630000010033431001")) {
user="乔峰";
}
if(account.equals("6630000010033431008")) {
user="洪七公";
}
}
public boolean vajs() {
if((user.equals("杨过")&&(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")))||
(user.equals("郭靖")&&account.equals("6217000010051320007"))||
(user.equals("张三丰")&&(account.equals("6640000010045442002")||account.equals("6640000010045442003")))) {
return true;
}
else {
return false;
}
}
public boolean vags() {
if((user.equals("张无忌")&&(account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")))||
(user.equals("韦小宝")&&(account.equals("6222081502051320785")||account.equals("6222081502051320786")))||
(user.equals("令狐冲")&&account.equals("6640000010045441009"))) {
return true;
}
else {
return false;
}
}
public boolean vany() {
if((user.equals("洪七公")&&account.equals("6630000010033431008"))||
(user.equals("乔峰")&&account.equals("6630000010033431001"))) {
return true;
}
else {
return false;
}
}
public boolean validatejs(ATM atm, User user) {
if(atm.va1()==true&&user.vajs()==true) {
return true;
}
else {
return false;
}
}
public boolean validategs(ATM atm,User user) {
if(atm.va2()==true&&user.vags()==true) {
return true;
}
else {
return false;
}
}
public boolean validateny(ATM atm,User user) {
if(atm.va3()==true&&user.vany()==true) {
return true;
}
else {
return false;
}
}
}
class ATM{
private String number;//编号

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}
public boolean clear() {
if(number.equals("01")||number.equals("02")||number.equals("03")||number.equals("04")||number.equals("05")||number.equals("06")
||number.equals("07")||number.equals("08")||number.equals("09")||number.equals("10")||number.equals("11")) {
return true;
}
else {
return false;
}
}
public boolean va1() {
if(number.equals("01")||number.equals("02")||number.equals("03")||number.equals("04")) {
return true;
}
else {
return false;
}
}
public boolean va2() {
if(number.equals("05")||number.equals("06")) {
return true;
}
else {
return false;
}
}
public boolean va3() {
if(number.equals("07")||number.equals("08")||number.equals("09")||number.equals("10")||number.equals("11")) {
return true;
}
else {
return false;
}
}
}

3.采坑心得

  这几个题目都运用了新知识,以及一些接口的使用,刚开始写这些也令我非常烦恼,但是后来发现,尽管这几个题目中两两相似,但是在编写的过程中发现还是很大不一样,所以思路不能太过于局限,要打开新思维,才能更好的改进代码。

4.改进建议

  这里是我题目集08的代码,感觉还需要对其中的输出方式,以及ATM的存储进行改进。

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//写多个类
Scanner m=new Scanner(System.in);
String mm;
mm=m.nextLine();
String[] temp=mm.split("\\s+");
ArrayList<User> z1 = new ArrayList<User>();
ArrayList<ATM> z2 = new ArrayList<ATM>();
ArrayList<String> z3 = new ArrayList<>();
String jkl=null;
while(!temp[0].equals("#")) {
if(temp.length==4&&temp[1].equals("88888888")) {
double x=Double.parseDouble(temp[3]);
if(x>10000) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
User u=new User();
u.setKexi(x);
u.setAccount(temp[0]);
if(u.vau()==false) {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
ATM r=new ATM();
r.setNumber(temp[2]);
if(r.clear()==false) {
System.out.println("Sorry,the ATM's id is wrong.");
System.exit(0);
}
u.vauser();
if(u.validatejs(r, u)==false&&u.validategs(r, u)==false){
System.out.println("Sorry,cross-bank withdrawal is not supported.");
System.exit(0);
}
if(u.validatejs(r, u)==true) {
if(x<0) {
u.good(x);
}
if(x>0) {
u.good(x);
}
}
if(u.validategs(r, u)==true) {
if(x<0) {
u.good(x);
}
if(x>0) {
u.good(x);
}
}
z1.add(u);
z2.add(r);
mm=m.nextLine();
temp=mm.split("\\s+");
}
else if(temp.length==1) {
jkl=temp[0];
//z3.add(temp[0]);
mm=m.nextLine();
temp=mm.split("\\s+");
System.out.println("¥10000.00");
System.exit(0);;
}
else {
System.out.println("Sorry,your password is wrong.");
System.exit(0);
}
}
/*for(int i=0;i<z1.size();i++) {
if(z1.get(i).getAccount().equals("6217000010041315709")||z1.get(i).getAccount().equals("6217000010041315715")||z1.get(i).getAccount().equals("6217000010041315718")||z1.get(i).getAccount().equals("6217000010051320007")
||z1.get(i).getAccount().equals("6222081502001312389")||z1.get(i).getAccount().equals("6222081502001312390")||z1.get(i).getAccount().equals("6222081502001312399")||z1.get(i).getAccount().equals("6222081502001312400")
||z1.get(i).getAccount().equals("6222081502051320785")||z1.get(i).getAccount().equals("6222081502051320786")) {

}
else {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}*/
for(int i=0;i<z1.size();i++) {
if(z1.get(i).validatejs(z2.get(i), z1.get(i))==true||z1.get(i).validategs(z2.get(i), z1.get(i))==true){

}
else {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
}
for(int i=0;i<z1.size();i++) {
if(z1.get(i).validatejs(z2.get(i), z1.get(i))==true) {
if(z1.get(i).getKexi()>0) {
System.out.println(z1.get(i).getUser()+"在中国建设银行的"+z2.get(i).getNumber()+"号ATM机上取款¥"+String.format("%.2f",z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
if(z1.get(i).getKexi()<0) {
System.out.println(z1.get(i).getUser()+"在中国建设银行的"+z2.get(i).getNumber()+"号ATM机上存款¥"+String.format("%.2f",-z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
}
if(z1.get(i).validategs(z2.get(i), z1.get(i))==true) {
if(z1.get(i).getKexi()>0) {
System.out.println(z1.get(i).getUser()+"在中国工商银行的"+z2.get(i).getNumber()+"号ATM机上取款¥"+String.format("%.2f",z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
if(z1.get(i).getKexi()<0) {
System.out.println(z1.get(i).getUser()+"在中国工商银行的"+z2.get(i).getNumber()+"号ATM机上存款¥"+String.format("%.2f",-z1.get(i).getKexi()));
System.out.println("当前余额为¥"+String.format("%.2f",z1.get(i).getBalance()));
}
}

}
for(int i=0;i<z1.size();i++) {
if(z1.get(i).getAccount().equals(jkl)) {
System.out.println("¥"+String.format("%.2f",z1.get(i).getBalance()));
}
/*else {
System.out.println("¥10000.00");
}*/
}

}
}
class User{
private double kexi;
public double getKexi() {
return kexi;
}
public void setKexi(double kexi) {
this.kexi = kexi;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String account;//卡号
private String password="88888888";
private double balance=10000.00;
public boolean vau(){
if(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")||account.equals("6217000010051320007")
||account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")
||account.equals("6222081502051320785")||account.equals("6222081502051320786")) {
return true;
}
else {
return false;
}
}
public double good(double x) {
balance=balance-x;
return balance;
}
public void vauser() {
if(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")) {
user="杨过";
}
if(account.equals("6217000010051320007")) {
user="郭靖";
}
if(account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")) {
user="张无忌";
}
if(account.equals("6222081502051320785")||account.equals("6222081502051320786")) {
user="韦小宝";
}
}
public boolean vajs() {
if((user.equals("杨过")&&(account.equals("6217000010041315709")||account.equals("6217000010041315715")||account.equals("6217000010041315718")))||
(user.equals("郭靖")&&account.equals("6217000010051320007"))) {
return true;
}
else {
return false;
}
}
public boolean vags() {
if((user.equals("张无忌")&&(account.equals("6222081502001312389")||account.equals("6222081502001312390")||account.equals("6222081502001312399")||account.equals("6222081502001312400")))||
(user.equals("韦小宝")&&(account.equals("6222081502051320785")||account.equals("6222081502051320786")))) {
return true;
}
else {
return false;
}
}
public boolean validatejs(ATM atm, User user) {
if(atm.va1()==true&&user.vajs()==true) {
return true;
}
else {
return false;
}
}
public boolean validategs(ATM atm,User user) {
if(atm.va2()==true&&user.vags()==true) {
return true;
}
else {
return false;
}
}
}
class ATM{
private String number;//编号

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}
public boolean clear() {
if(number.equals("01")||number.equals("02")||number.equals("03")||number.equals("04")||number.equals("05")||number.equals("06")) {
return true;
}
else {
return false;
}
}
public boolean va1() {
if(number.equals("01")||number.equals("02")||number.equals("03")||number.equals("04")) {
return true;
}
else {
return false;
}
}
public boolean va2() {
if(number.equals("05")||number.equals("06")) {
return true;
}
else {
return false;
}
}
}

5.总结

  这三次题目集是我对java的编写更加感兴趣,并且学习到了更多的知识,在编写代码的同时通过不断去翻阅资料,学习视频,掌握越来越多的知识,对代码的编写规则,编写规范上更是有了进一步的提升。老师在课堂上讲的东西也非常的有用,都是一些重点,老师的课教学的很有质量,最后感谢老师的教学,使得我对程序的编写更近一步!

posted @ 2021-06-20 23:22  zia7  阅读(76)  评论(0)    收藏  举报