高抬贵手

导航

第三阶段Blog作业

题目集7-1   图形卡片排序游戏 

输入格式:

  • 首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如: 1 3 4 2 1 3 4 2 1 3 0
  • 然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。
  • 如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出Wrong Format。
  • 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:

输出格式:

  1. 排序前的各图形类型及面积,格式为图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;
  2. 排序后的各图形类型及面积,格式同排序前的输出;
  3. 所有图形的面积总和,格式为Sum of area:总面积值。

输入样例1:

在这里给出一组输入。例如:

1 5 3 2 0

结尾无空行

输出样例1:

在这里给出相应的输出。例如:

Wrong Format

结尾无空行

输入样例2:

在这里给出一组输入。例如:

4 2 1 3 0

3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 3.5

结尾无空行

输出样例2:

在这里给出相应的输出。例如:

The original list:

Trapezoid:1.14 Rectangle:3.22 Circle:98.52 Triangle:4.02

The sorted list:

Circle:98.52 Triangle:4.02 Rectangle:3.22 Trapezoid:1.14

Sum of area:106.91

结尾无空行

输入样例3:

在这里给出一组输入。例如:

4 2 1 3 0

3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 8.4

结尾无空行

输出样例3:

在这里给出相应的输出。例如:

Wrong Format

结尾无空行

 

代码

import java.util.Scanner;

import java.util.Arrays;

 

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int[] A=new int[100];

        int a=in.nextInt();

        int x=0;

        while(a!=0){

            if(a>4 ||a<0){

                System.out.print("Wrong Format");

                System.exit(-1);

            }

            A[x]=a;

            a=in.nextInt();

            x++;

        }

        double[] B=new double[x];

        int j=0;

        for(int i=0;i<x;i++){

            switch (A[i]){

                case 1:

                    double radius=in.nextDouble();

                    if (radius <= 0){

                        System.out.print("Wrong Format");

                        System.exit(-1);//输入错误,直接结束;

                    }

                    Circle circle = new Circle();

                    circle.setRadius(radius);

                    B[j]=circle.getArea();

                    j++;

                    break;

                case 2:

                    double width=in.nextDouble();

                    double length=in.nextDouble();

                    if (length <= 0 || width <= 0){

                        System.out.print("Wrong Format");

                        System.exit(-1);

                    }

                    Rectangle rectangle = new Rectangle();

                    rectangle.setLength(length);

                    rectangle.setWidth(width);

                    B[j]=rectangle.getArea();

                    j++;

                    break;

                case 3:

                    double side1=in.nextDouble();

                    double side2=in.nextDouble();

                    double side3=in.nextDouble();

                    if (side1+side2<=side3 ||side1+side3<=side2 || side2+side3<=side1 || side1<=0 || side2<=0 || side3<=0){

                        System.out.print("Wrong Format");

                        System.exit(-1);

                    }

                    Triangle triangle= new Triangle();

                    triangle.setSide1(side1);

                    triangle.setSide2(side2);

                    triangle.setSide3(side3);

                    B[j]=triangle.getArea();

                    j++;

                    break;

                case 4:

                    double side4=in.nextDouble();

                    double side5=in.nextDouble();

                    double height=in.nextDouble();

                    if (side4<=0 || side5<=0 || height<=0){

                        System.out.print("Wrong Format");

                        System.exit(0);

                    }

                    Trapezoid trapezoid= new Trapezoid();

                    trapezoid.setSide4(side4);

                    trapezoid.setSide5(side5);

                    trapezoid.setHeight(height);

                    B[j]=trapezoid.getArea();

                    j++;

                    break;

            }

        }

        System.out.println("The original list:");

        double sum=0;

        for(int i=0;i<x;i++){

            if(A[i]==1){

                System.out.print("Circle:");

            }

            if(A[i]==2){

                System.out.print("Rectangle:");

            }

            if(A[i]==3){

                System.out.print("Triangle:");

            }

            if(A[i]==4){

                System.out.print("Trapezoid:");

            }

            System.out.printf("%.2f ",B[i]);

            sum+=B[i];

        }

        System.out.println("\nThe sorted list:");

        double news;

        int News;

        for(int i=0;i<x;i++){

            for(int k=0;k<x-1;k++){

                if(B[k]>B[k+1]){

                    news=B[k];

                    B[k]=B[k+1];

                    B[k+1]=news;

                    News=A[k];

                    A[k]=A[k+1];

                    A[k+1]=News;

                }

            }

        }

        for(int i=x-1;i>=0;i--){

            if(A[i]==1){

                System.out.print("Circle:");

            }

            if(A[i]==2){

                System.out.print("Rectangle:");

            }

            if(A[i]==3){

                System.out.print("Triangle:");

            }

            if(A[i]==4){

                System.out.print("Trapezoid:");

            }

            System.out.printf("%.2f ",B[i]);

        }

        System.out.printf("\nSum of area:%.2f",sum);

    }

}

 

class Shape{

    public double getArea(){

        return 0.0;

    }

}

 

class Circle extends Shape{//求圆面积

    private double radius;

    public double getRadius(){

        return radius;

    }

    public void setRadius(double radius){

        this.radius = radius;

    }

    public boolean validate(double radius){

        return radius>0;

    }

    public double getArea(){

        return Math.pow(radius,2)* Math.PI;

    }

}

 

class Rectangle extends Shape{//求矩形面积

    private double width;

    private double length;

    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;

    }

    public double getArea(){

        return width * length;

    }

}

 

class Triangle extends Shape{//求三角形面积

    private double side1;

    private double side2;

    private double side3;

    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;

    }

    public boolean validate(double side1,double side2,double side3){

        return side1+side2>side3;

    }

    public double getArea(){

        return (1.0/4.0)*Math.sqrt((side1+side2+side3)*(side1+side2-side3)*(side1+side3-side2)*(side2+side3-side1));

    }

}

 

class Trapezoid extends Shape{

    private double side4;

    private double side5;

    private double height;

    public double getSide4(){

        return side4;

    }

    public void setSide4(double side4) {

        this.side4 = side4;

    }

    public double getSide5(){

        return side5;

    }

    public void setSide5(double side5) {

        this.side5 = side5;

    }

    public double getHeight(){

        return height;

    }

    public void setHeight(double height) {

        this.height = height;

    }

    public double getArea(){

        return (1.0/2.0)*(side4+side5)*height;

    }

}

分析

 

 

 

这道题没有想象中那么复杂,和前面有一次的图形继承差不多,只是在原来的基础上增加了在输入输出上的难度,也将每个图形都分好了类,没有特别的地方。

 

 

题目集7-2    图形卡片分组游戏

输入格式:

  • 在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如:1 3 4 2 1 3 4 2 1 3 0
  • 根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。
  • 如果图形数量非法(<=0)或图形属性值非法(数值<0以及三角形三边不能组成三角形),则输出Wrong Format。
  • 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:

输出格式:

  1. 排序前的各图形类型及面积,格式为[图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ],注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格,在结束符“]”之前;
  2. 输出分组后的图形类型及面积,格式为[圆形分组各图形类型及面积][矩形分组各图形类型及面积][三角形分组各图形类型及面积][梯形分组各图形类型及面积],各组内格式为图形名称:面积值。按照“Circle、Rectangle、Triangle、Trapezoid”的顺序依次输出;
  3. 各组内图形排序后的各图形类型及面积,格式同排序前各组图形的输出;
  4. 各组中面积之和的最大值输出,格式为The max area:面积值。

输入样例1:

在这里给出一组输入。例如:

1 5 3 2 0

结尾无空行

输出样例1:

在这里给出相应的输出。例如:

Wrong Format

结尾无空行

输入样例2:

在这里给出一组输入。例如:

4 2 1 3 0

3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 3.5

结尾无空行

输出样例2:

在这里给出相应的输出。例如:

The original list:

[Trapezoid:1.14 Rectangle:3.22 Circle:98.52 Triangle:4.02 ]

The Separated List:

[Circle:98.52 ][Rectangle:3.22 ][Triangle:4.02 ][Trapezoid:1.14 ]

The Separated sorted List:

[Circle:98.52 ][Rectangle:3.22 ][Triangle:4.02 ][Trapezoid:1.14 ]

The max area:98.52

结尾无空行

输入样例3:

在这里给出一组输入。例如:

2 1 2 1 1 3 3 4 4 1 1 1 2 1 0

2.3 3.5 2.5 4.5 2.1 2.6 8.5 3.2 3.1 3.6 8.5 7.5 9.1245 6.5 3.4 10.2 11.2 11.6 15.4 5.8 2.13 6.2011 2.5 6.4 18.65

结尾无空行

输出样例3:

在这里给出相应的输出。例如:

The original list:

[Rectangle:8.05 Circle:19.63 Rectangle:9.45 Circle:21.24 Circle:226.98 Triangle:4.65 Triangle:29.80 Trapezoid:50.49 Trapezoid:175.56 Circle:105.68 Circle:14.25 Circle:120.81 Rectangle:16.00 Circle:1092.72 ]

The Separated List:

[Circle:19.63 Circle:21.24 Circle:226.98 Circle:105.68 Circle:14.25 Circle:120.81 Circle:1092.72 ][Rectangle:8.05 Rectangle:9.45 Rectangle:16.00 ][Triangle:4.65 Triangle:29.80 ][Trapezoid:50.49 Trapezoid:175.56 ]

The Separated sorted List:

[Circle:1092.72 Circle:226.98 Circle:120.81 Circle:105.68 Circle:21.24 Circle:19.63 Circle:14.25 ][Rectangle:16.00 Rectangle:9.45 Rectangle:8.05 ][Triangle:29.80 Triangle:4.65 ][Trapezoid:175.56 Trapezoid:50.49 ]

The max area:1601.31

结尾无空行

输入样例4:

在这里给出一组输入。例如:

1 1 3 0

6.5 12.54 3.6 5.3 6.4

结尾无空行

输出样例4:

在这里给出相应的输出。例如:

The original list:

[Circle:132.73 Circle:494.02 Triangle:9.54 ]

The Separated List:

[Circle:132.73 Circle:494.02 ][][Triangle:9.54 ][]

The Separated sorted List:

[Circle:494.02 Circle:132.73 ][][Triangle:9.54 ][]

The max area:626.75

结尾无空行

 

代码

import java.util.Scanner;

import java.util.Arrays;

 

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int[] A=new int[100];

        int a=in.nextInt();

        int x=0;

        if(a==0){

            System.out.print("Wrong Format");

            System.exit(-1);

        }

        while(a!=0){

            if(a>4 || a<0){

                System.out.print("Wrong Format");

                System.exit(-1);

            }

            A[x]=a;

            a=in.nextInt();

            x++;

        }

        double[] B=new double[x];

        double[] Circle=new double[100];

        double[] Rectangle=new double[100];

        double[] Triangle=new double[100];

        double[] Trapezoid=new double[100];

        int j=0;

        int c=0;

        int v=0;

        int n=0;

        int m=0;

        double sum1=0;

        double sum2=0;

        double sum3=0;

        double sum4=0;

        for(int i=0;i<x;i++){

            switch (A[i]){

                case 1:

                    double radius=in.nextDouble();

                    if (radius <= 0){

                        System.out.print("Wrong Format");

                        System.exit(-1);//输入错误,直接结束;

                    }

                    Circle circle = new Circle();

                    circle.setRadius(radius);

                    Circle[c]=circle.getArea();

                    B[j]=circle.getArea();

                    c++;

                    j++;

                    break;

                case 2:

                    double width=in.nextDouble();

                    double length=in.nextDouble();

                    if (length <= 0 || width <= 0){

                        System.out.print("Wrong Format");

                        System.exit(-1);

                    }

                    Rectangle rectangle = new Rectangle();

                    rectangle.setLength(length);

                    rectangle.setWidth(width);

                    Rectangle[v]=rectangle.getArea();

                    B[j]=rectangle.getArea();

                    v++;

                    j++;

                    break;

                case 3:

                    double side1=in.nextDouble();

                    double side2=in.nextDouble();

                    double side3=in.nextDouble();

                    if (side1+side2<=side3 ||side1+side3<=side2 || side2+side3<=side1 || side1<=0 || side2<=0 || side3<=0){

                        System.out.print("Wrong Format");

                        System.exit(-1);

                    }

                    Triangle triangle= new Triangle();

                    triangle.setSide1(side1);

                    triangle.setSide2(side2);

                    triangle.setSide3(side3);

                    Triangle[n]=triangle.getArea();

                    B[j]=triangle.getArea();

                    n++;

                    j++;

                    break;

                case 4:

                    double side4=in.nextDouble();

                    double side5=in.nextDouble();

                    double height=in.nextDouble();

                    if (side4<=0 || side5<=0 || height<=0){

                        System.out.print("Wrong Format");

                        System.exit(-1);

                    }

                    Trapezoid trapezoid= new Trapezoid();

                    trapezoid.setSide4(side4);

                    trapezoid.setSide5(side5);

                    trapezoid.setHeight(height);

                    Trapezoid[m]=trapezoid.getArea();

                    B[j]=trapezoid.getArea();

                    m++;

                    j++;

                    break;

            }

        }

        System.out.println("The original list:");

        System.out.print("[");

        for(int i=0;i<x;i++){

            if(A[i]==1){

                System.out.print("Circle:");

            }

            if(A[i]==2){

                System.out.print("Rectangle:");

            }

            if(A[i]==3){

                System.out.print("Triangle:");

            }

            if(A[i]==4){

                System.out.print("Trapezoid:");

            }

            System.out.printf("%.2f ",B[i]);

        }

        System.out.print("]");

        System.out.println("\nThe Separated List:");

        System.out.print("[");

        for(int i=0;i<c;i++){

            System.out.printf("Circle:%.2f ",Circle[i]);

        }

        System.out.print("]");

        System.out.print("[");

        for(int i=0;i<v;i++){

            System.out.printf("Rectangle:%.2f ",Rectangle[i]);

        }

        System.out.print("]");

        System.out.print("[");

        for(int i=0;i<n;i++){

            System.out.printf("Triangle:%.2f ",Triangle[i]);

        }

        System.out.print("]");

        System.out.print("[");

        for(int i=0;i<m;i++){

            System.out.printf("Trapezoid:%.2f ",Trapezoid[i]);

        }

        System.out.print("]");

        System.out.println("\nThe Separated sorted List:");

        double news;

        for(int i=0;i<c;i++){

            for(int k=0;k<c-1;k++){

                if(Circle[k]>Circle[k+1]){

                    news=Circle[k];

                    Circle[k]=Circle[k+1];

                    Circle[k+1]=news;

                }

            }

        }

        for(int i=0;i<v;i++){

            for(int k=0;k<v-1;k++){

                if(Rectangle[k]>Rectangle[k+1]){

                    news=Rectangle[k];

                    Rectangle[k]=Rectangle[k+1];

                    Rectangle[k+1]=news;

                }

            }

        }

        for(int i=0;i<n;i++){

            for(int k=0;k<n-1;k++){

                if(Triangle[k]>Triangle[k+1]){

                    news=Triangle[k];

                    Triangle[k]=Triangle[k+1];

                    Triangle[k+1]=news;

                }

            }

        }

        for(int i=0;i<m;i++){

            for(int k=0;k<m-1;k++){

                if(Trapezoid[k]>Trapezoid[k+1]){

                    news=Trapezoid[k];

                    Trapezoid[k]=Trapezoid[k+1];

                    Trapezoid[k+1]=news;

                }

            }

        }

        System.out.print("[");

        for(int i=c-1;i>=0;i--){

            System.out.printf("Circle:%.2f ",Circle[i]);

            sum1+=Circle[i];

        }

        System.out.print("]");

        System.out.print("[");

        for(int i=v-1;i>=0;i--){

            System.out.printf("Rectangle:%.2f ",Rectangle[i]);

            sum2+=Rectangle[i];

        }

        System.out.print("]");

        System.out.print("[");

        for(int i=n-1;i>=0;i--){

            System.out.printf("Triangle:%.2f ",Triangle[i]);

            sum3+=Triangle[i];

        }

        System.out.print("]");

        System.out.print("[");

        for(int i=m-1;i>=0;i--){

            System.out.printf("Trapezoid:%.2f ",Trapezoid[i]);

            sum4+=Trapezoid[i];

        }

        System.out.print("]");

        double SUM = Math.max(sum1, Math.max(sum2, Math.max(sum3, sum4)));

        System.out.printf("\nThe max area:%.2f",SUM);

    }

}

 

class Shape{

    public double getArea(){

        return 0.0;

    }

}

 

class Circle extends Shape{//求圆面积

    private double radius;

    public double getRadius(){

        return radius;

    }

    public void setRadius(double radius){

        this.radius = radius;

    }

    public boolean validate(double radius){

        return radius>0;

    }

    public double getArea(){

        return Math.pow(radius,2)* Math.PI;

    }

}

 

class Rectangle extends Shape{//求矩形面积

    private double width;

    private double length;

    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;

    }

    public double getArea(){

        return width * length;

    }

}

 

class Triangle extends Shape{//求三角形面积

    private double side1;

    private double side2;

    private double side3;

    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;

    }

    public boolean validate(double side1,double side2,double side3){

        return side1+side2>side3;

    }

    public double getArea(){

        return (1.0/4.0)*Math.sqrt((side1+side2+side3)*(side1+side2-side3)*(side1+side3-side2)*(side2+side3-side1));

    }

}

 

class Trapezoid extends Shape{

    private double side4;

    private double side5;

    private double height;

    public double getSide4(){

        return side4;

    }

    public void setSide4(double side4) {

        this.side4 = side4;

    }

    public double getSide5(){

        return side5;

    }

    public void setSide5(double side5) {

        this.side5 = side5;

    }

    public double getHeight(){

        return height;

    }

    public void setHeight(double height) {

        this.height = height;

    }

    public double getArea(){

        return (1.0/2.0)*(side4+side5)*height;

    }

}

 

分析

 

 

 

这道题在前面的那题的基础上没有太大改动,加入了分组元素,每个图形组的输入输出都归结到一起,其实也没有那么复杂,因为有前面的基础写起来还是很容易的。

 

题目集8  ATM机类结构设计(一)

输入格式:

每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:

  • 存款、取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔), 其中,当金额大于0时,代表取款,否则代表存款。
  • 查询余额功能输入数据格式: 卡号

输出格式:

①输入错误处理

  • 如果输入卡号不存在,则输出Sorry,this card does not exist.。
  • 如果输入ATM机编号不存在,则输出Sorry,the ATM's id is wrong.。
  • 如果输入银行卡密码错误,则输出Sorry,your password is wrong.。
  • 如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.。
  • 如果检测为跨行存取款,则输出Sorry,cross-bank withdrawal is not supported.。

②取款业务输出

输出共两行,格式分别为:

[用户姓名]在[银行名称]的[ATM编号]上取款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

③存款业务输出

输出共两行,格式分别为:

[用户姓名]在[银行名称]的[ATM编号]上存款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

④查询余额业务输出

¥[金额]

金额保留两位小数。

输入样例1:

在这里给出一组输入。例如:

6222081502001312390 88888888 06 -500.00

#

结尾无空行

输出样例1:

在这里给出相应的输出。例如:

张无忌在中国工商银行的06号ATM机上存款¥500.00

当前余额为¥10500.00

结尾无空行

输入样例2:

在这里给出一组输入。例如:

6217000010041315709  88888888 02 3500.00

#

结尾无空行

输出样例2:

在这里给出相应的输出。例如:

杨过在中国建设银行的02号ATM机上取款¥3500.00

当前余额为¥6500.00

结尾无空行

输入样例3:

在这里给出一组输入。例如:

6217000010041315715

#

结尾无空行

输出样例3:

在这里给出相应的输出。例如:

¥10000.00

结尾无空行

输入样例4:

在这里给出一组输入。例如:

6222081502001312390 88888888 06 -500.00

6222081502051320786 88888888 06 1200.00

6217000010041315715 88888888 02 1500.00

6217000010041315709  88888888 02 3500.00

6217000010041315715

#

结尾无空行

输出样例4:

在这里给出相应的输出。例如:

张无忌在中国工商银行的06号ATM机上存款¥500.00

当前余额为¥10500.00

韦小宝在中国工商银行的06号ATM机上取款¥1200.00

当前余额为¥8800.00

杨过在中国建设银行的02号ATM机上取款¥1500.00

当前余额为¥8500.00

杨过在中国建设银行的02号ATM机上取款¥3500.00

当前余额为¥5000.00

¥5000.00

结尾无空行

 

代码

import java.util.Scanner;

import java.util.ArrayList;

 

class Account {

    ArrayList<Bank> banklist;

    private String name;

    private String account;

    private String password;

    private double balance;

    Bank bank;

    private  ArrayList<String> cardList;

    public Account(){

    }

    public Account(String name,String account,String password,double balance,ArrayList<Bank> banklist,Bank bank,ArrayList<String> cardList){

        this.name=name;

        this.account=account;

        this.password=password;

        this.balance=balance;

        this.bank=bank;

        this.banklist=banklist;

        this.cardList=cardList;

    }

    public String getName() {

        return name;

    }

    public String getAccount() {

        return account;

    }

    public String getPassword() {

        return password;

    }

    public double getBalance() {

        return balance;

    }

    public ArrayList<String> getCardList() {

        return cardList;

    }

    public void setBalance(double balance) {

        this.balance = balance;

    }

}

 

 

class Bank {

    ArrayList<String> ATMList;

    String bankname;

    public Bank(String bankname,ArrayList<String> ATMList)

    {

        this.bankname=bankname;

        this.ATMList=ATMList;

    }

}

 

class Check {

    ArrayList<Account> accountList;

    String card;

    String password;

    String number;

    double money;

 

    public Check(ArrayList<Account> accountList,String card,String password,String number,double money){

        this.accountList=accountList;

        this.card=card;

        this.password=password;

        this.number=number;

        this.money=money;

    }

 

    public boolean check(){

        int flag=0;

        int k=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if (card.equals(accountList.get(i).getCardList().get(j))){

                    flag=1;

                    k=i;

                    break;

                }

            }

            if(flag==1){

                break;

            }

        }

        if(flag==1){

            if(password.equals(accountList.get(k).getPassword())){

                flag=2;

            }

            else{

                System.out.print("Sorry,your password is wrong.");

                return false;

            }

        }

        else{

            System.out.print("Sorry,this card does not exist.");

            return false;

        }

        for(int i=0;i<accountList.get(k).banklist.size();i++){

            for(int j=0;j<accountList.get(k).banklist.get(i).ATMList.size();j++){

                if(number.equals(accountList.get(k).banklist.get(i).ATMList.get(j))){

                    flag=3;

                    break;

                }

            }

        }

        if(flag==3){

            if(money<=accountList.get(k).getBalance()){

                flag=4;

            }

            else{

                System.out.print("Sorry,your account balance is insufficient.");

                return false;

            }

        }

        else{

            System.out.print("Sorry,the ATM's id is wrong.");

            return false;

        }

        for(int i=0;i<accountList.get(k).bank.ATMList.size();i++){

            if(number.equals(accountList.get(k).bank.ATMList.get(i))){

                flag=5;

                break;

            }

        }

        if(flag!=5){

            System.out.print("Sorry,cross-bank withdrawal is not supported.");

            return false;

        }

        return true;

    }

    public Check(ArrayList<Account> accountList, String card){

        this.accountList = accountList;

        this.card = card;

    }

 

    public boolean check1(){

        int flag=0;

        for (Account account : accountList) {

            for (int j = 0; j < account.getCardList().size(); j++) {

                if (card.equals(account.getCardList().get(j))) {

                    flag = 1;

                    break;

                }

            }

            if (flag == 1) {

                break;

            }

        }

        if(flag!=1)

        {

            System.out.print("Sorry,this card does not exist.");

            return false;

        }

        return true;

    }

 

}

 

class Show{

    ArrayList<Account> accountList;

    String card;

    String password;

    String number;

    double money;

    public Show(ArrayList<Account> accountList,String card,String password,String number,double money){

        this.password=password;

        this.number=number;

        this.card=card;

        this.accountList=accountList;

        this.money=money;

    }

    public void show(){

        int t=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    t=i;

                    break;

                }

            }

        }

 

        if(money<0){

            money=-money;

            System.out.printf(accountList.get(t).getName()+"在"+accountList.get(t).bank.bankname+"的"+number+"号ATM机上存款¥%.2f\n",money);

        }

        else{

            System.out.printf(accountList.get(t).getName()+"在"+accountList.get(t).bank.bankname+"的"+number+"号ATM机上取款¥%.2f\n",money);

        }

        System.out.printf("当前余额为¥%.2f\n",accountList.get(t).getBalance());

    }

    public Show(ArrayList<Account> accountList,String card){

        this.accountList=accountList;

        this.card=card;

    }

    public void show1(){

        int t=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    t=i;

                    break;

                }

            }

        }

        System.out.printf("¥%.2f\n",accountList.get(t).getBalance());

    }

}

 

public class Main {

    public static void main(String[] args) {

        ArrayList<String> ATMList1 = new ArrayList<>();

        ArrayList<Bank> bankList = new ArrayList<>();

        ATMList1.add("01");

        ATMList1.add("02");

        ATMList1.add("03");

        ATMList1.add("04");

        Bank jsyh = new Bank("中国建设银行", ATMList1);

        bankList.add(jsyh);

        ArrayList<String> ATMList2 = new ArrayList<>();

        ATMList2.add("05");

        ATMList2.add("06");

        Bank gsyh = new Bank("中国工商银行", ATMList2);

        bankList.add(gsyh);

 

        ArrayList<String> cardList1 = new ArrayList<>();

        ArrayList<Account> accountList = new ArrayList<>();

        cardList1.add("6217000010041315709");

        cardList1.add("6217000010041315715");

        Account account1 = new Account("杨过", "3217000010041315709", "88888888", 10000.00, bankList, jsyh,cardList1);

        accountList.add(account1);

        ArrayList<String> cardList2 = new ArrayList<>();

        cardList2.add("6217000010041315718");

        Account account2 = new Account("杨过", "3217000010041315715", "88888888", 10000.00, bankList,jsyh,cardList2);

        accountList.add(account2);

        ArrayList<String> cardList3 = new ArrayList<>();

        cardList3.add("6217000010051320007");

        Account account3 = new Account("郭靖", "3217000010051320007", "88888888", 10000.00, bankList,jsyh,cardList3);

        accountList.add(account3);

        ArrayList<String> cardList4 = new ArrayList<>();

        cardList4.add("6222081502001312389");

        Account account4 = new Account("张无忌", "3222081502001312389", "88888888", 10000.00, bankList,gsyh,cardList4);

        accountList.add(account4);

        ArrayList<String> cardList5 = new ArrayList<>();

        cardList5.add("6222081502001312390");

        Account account5 = new Account("张无忌", "3222081502001312390", "88888888", 10000.00, bankList,gsyh,cardList5);

        accountList.add(account5);

        ArrayList<String> cardList6 = new ArrayList<>();

        cardList6.add("6222081502001312399");

        cardList6.add("6222081502001312400");

        Account account6 = new Account("张无忌", "3222081502001312399", "88888888", 10000.00, bankList,gsyh,cardList6);

        accountList.add(account6);

        ArrayList<String> cardList7 = new ArrayList<>();

        cardList7.add("6222081502051320785");

        Account account7 = new Account("韦小宝", "3222081502051320785", "88888888", 10000.00, bankList,gsyh,cardList7);

        accountList.add(account7);

        ArrayList<String> cardList8 = new ArrayList<>();

        cardList8.add("6222081502051320786");

        Account account8 = new Account("韦小宝", "3222081502051320786", "88888888", 10000.00, bankList,gsyh,cardList8);

        accountList.add(account8);

        Scanner in=new Scanner(System.in);

        String kp=in.nextLine();

        Check check;

        while(!kp.equals("#")){

            String[] S=kp.split("\\s+");

            if(S.length!=1){

                check = new Check(accountList,S[0],S[1],S[2],Double.parseDouble(S[3]));

                if (check.check()){

                    int t=0;

                    for(int i=0;i<accountList.size();i++){

                        for(int j=0;j<accountList.get(i).getCardList().size();j++){

                            if(S[0].equals(accountList.get(i).getCardList().get(j))){

                                t=i;

                                break;

                            }

                        }

                    }

                    accountList.get(t).setBalance(accountList.get(t).getBalance()-Double.parseDouble(S[3]));

                    Show show = new Show(accountList,S[0], S[1],S[2],Double.parseDouble(S[3]));

                    show.show();

                }

            }

            else {

                check=new Check(accountList,S[0]);

                if(check.check1()){

                    Show show1= new Show(accountList,S[0]);

                    show1.show1();

                }

            }

           kp=in.nextLine();

        }

    }

}

 

分析

 

 

 

 

这道题有点棘手,好在之前做过一个银行取钱的题目,用户账户也很大程度的得到进一步的扩展,没有做过这方面的深入,刚开始做起来还是很困难的,所以在使用类方法的时候没有考虑很多,很多地方都有更简便的算法,后来也没有纠结那么多。

 

题目集9    ATM机类结构设计(二)

 

输入格式:

每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:

  • 取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔)
  • 查询余额功能输入数据格式: 卡号

输出格式:

①输入错误处理

  • 如果输入卡号不存在,则输出Sorry,this card does not exist.。
  • 如果输入ATM机编号不存在,则输出Sorry,the ATM's id is wrong.。
  • 如果输入银行卡密码错误,则输出Sorry,your password is wrong.。
  • 如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.。

②取款业务输出

输出共两行,格式分别为:

业务:取款 [用户姓名]在[银行名称]的[ATM编号]上取款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

③查询余额业务输出

业务:查询余额 ¥[金额]

金额保留两位小数。

输入样例1:

在这里给出一组输入。例如:

6222081502001312390 88888888 06 500.00

#

结尾无空行

输出样例1:

在这里给出相应的输出。例如:

业务:取款 张无忌在中国工商银行的06号ATM机上取款¥500.00

当前余额为¥9500.00

结尾无空行

输入样例2:

在这里给出一组输入。例如:

6217000010041315709  88888888 06 3500.00

#

结尾无空行

输出样例2:

在这里给出相应的输出。例如:

业务:取款 杨过在中国工商银行的06号ATM机上取款¥3500.00

当前余额为¥6395.00

结尾无空行

输入样例3:

在这里给出一组输入。例如:

6217000010041315715

#

结尾无空行

输出样例3:

在这里给出相应的输出。例如:

业务:查询余额 ¥10000.00

结尾无空行

输入样例4:

在这里给出一组输入。例如:

6222081502001312390 88888888 01 500.00

6222081502051320786 88888888 06 1200.00

6217000010041315715 88888888 02 1500.00

6217000010041315709  88888888 02 3500.00

6217000010041315715

#

结尾无空行

输出样例4:

在这里给出相应的输出。例如:

业务:取款 张无忌在中国建设银行的01号ATM机上取款¥500.00

当前余额为¥9490.00

业务:取款 韦小宝在中国工商银行的06号ATM机上取款¥1200.00

当前余额为¥8800.00

业务:取款 杨过在中国建设银行的02号ATM机上取款¥1500.00

当前余额为¥8500.00

业务:取款 杨过在中国建设银行的02号ATM机上取款¥3500.00

当前余额为¥5000.00

业务:查询余额 ¥5000.00

结尾无空行

输入样例5:

在这里给出一组输入。例如:

6640000010045442002 88888888 09 3000

6640000010045442002 88888888 06 8000

6640000010045442003 88888888 01 10000

6640000010045442002

#

结尾无空行

输出样例5:

在这里给出相应的输出。例如:

业务:取款 张三丰在中国农业银行的09号ATM机上取款¥3000.00

当前余额为¥6880.00

业务:取款 张三丰在中国工商银行的06号ATM机上取款¥8000.00

当前余额为¥-1416.00

业务:取款 张三丰在中国建设银行的01号ATM机上取款¥10000.00

当前余额为¥-11916.00

业务:查询余额 ¥-11916.00

结尾无空行

 

代码:

import java.util.Scanner;

import java.util.ArrayList;

class Bank{

    String bankname;

    ArrayList<String> ATMList;

    public Bank(String bankname,ArrayList<String> ATMList)

    {this.bankname=bankname;

        this.ATMList=ATMList;}}

class Account{

    Bank bank;

    private String name;private String password;private double balance;

    ArrayList<Bank> banklist;

    private ArrayList<String> cardList;private ArrayList<String> ATMList;private ArrayList<String> BanknameList;

    public Account() {}

    public Account(String name,String account,String password,double balance,ArrayList<Bank> banklist,Bank bank,ArrayList<String> cardList,ArrayList<String> ATMList,ArrayList<String> BanknameList){

        this.name=name;

        this.password=password;

        this.balance=balance;

        this.bank=bank;

        this.banklist=banklist;

        this.cardList=cardList;

        this.ATMList=ATMList;

        this.BanknameList=BanknameList;}

    public String getName() {

        return name;}

    public String getPassword() {

        return password;}

    public double getBalance() {

        return balance;}

    public ArrayList<String> getCardList() {

        return cardList;}

    public ArrayList<String> getATMList() {

        return ATMList;}

    public ArrayList<String> getBanknameList() {

        return BanknameList;}

    public void setBalance(double balance) {

        this.balance = balance;}}

class Check{

    ArrayList<Account> accountList;ArrayList<Account> accountList1;String card;String password;String number;

    double money;

    public Check(ArrayList<Account> accountList,String card,String password,String number,double money){

        this.accountList=accountList;this.card=card;this.password=password;this.number=number;this.money=money;}

    public Check(ArrayList<Account> accountList, String card){

        this.accountList = accountList;this.card = card;}

    public Check(ArrayList<Account> accountList,ArrayList<Account> accountList1,String card,String password,String number,double money){

        this.accountList=accountList;this.accountList1=accountList1;this.card=card;this.password=password;this.number=number;this.money=money;}

    public boolean check(){

        int flag=0,k=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if (card.equals(accountList.get(i).getCardList().get(j))){

                    flag=1;k=i;break;}}

            if(flag==1){

                break;}}

        if(flag==1){

            if(password.equals(accountList.get(k).getPassword())) flag=2;

            else{

                System.out.println("Sorry,your password is wrong.");//银行卡密码错误

                return false;}}

        else{

            System.out.println("Sorry,this card does not exist.");//卡号不存在

            return false;}

        if(flag!=2)  System.exit(-1);

        for(int i=0;i<accountList.get(k).banklist.size();i++){

            for(int j=0;j<accountList.get(k).banklist.get(i).ATMList.size();j++){

                if(number.equals(accountList.get(k).banklist.get(i).ATMList.get(j))){

                    flag=3;break;}}}

        if(flag==3) return true;

        else{

            System.out.println("Sorry,the ATM's id is wrong.");//ATM机编号不存在

            return false;}}

    public boolean check1(){

        int flag=0;

        for (Account account : accountList) {

            for (int j = 0; j < account.getCardList().size(); j++) {

                if (card.equals(account.getCardList().get(j))) {

                    flag = 1;

                    break;}}

            if (flag == 1) break;}

        if(flag==1) return true;

        else{

            System.out.println("Sorry,this card does not exist.");//卡号不存在

            return false;}}

    public boolean check2(){

        int k=0,flag=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if (card.equals(accountList.get(i).getCardList().get(j))){

                    k=i;break;}}}

        for(int i=0;i<accountList.get(k).bank.ATMList.size();i++){

            if(number.equals(accountList.get(k).bank.ATMList.get(i))){

                flag=1;break;}}

        return flag != 1;}

    public boolean check3(){

        int flag=0;

        for (Account account : accountList1) {

            for (int j = 0; j < account.getCardList().size(); j++) {

                if (card.equals(account.getCardList().get(j))) {

                    flag = 1;

                    break;}}}return flag == 1;}

    public boolean check4() {

        int k = 0;

        for (int i = 0; i < accountList.size(); i++) {

            for (int j = 0; j < accountList.get(i).getCardList().size(); j++) {

                if (card.equals(accountList.get(i).getCardList().get(j))) {

                    k = i;

                    break;}}}if(money<=accountList.get(k).getBalance()){

            return true;} else {

            System.out.println("Sorry,your account balance is insufficient.");//取款金额大于账户余额

            return false;}}}

class Access{

    ArrayList<Account> accountList;String card;String password;String number;

    double money;

    public Access(ArrayList<Account> accountList,String card,String password,String number,double money){

        this.password=password;this.number=number;this.card=card;this.accountList=accountList;this.money=money;}

    public void access(){

        int k=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    k=i;break;}}}

        accountList.get(k).setBalance(accountList.get(k).getBalance()-money);}

    public void access1(){

        int k=0;double q=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    k=i;break;}}}

        for(int i=0;i<accountList.get(k).getATMList().size();i++){

            if(number.equals(accountList.get(k).getATMList().get(0))||number.equals(accountList.get(k).getATMList().get(1))||number.equals(accountList.get(k).getATMList().get(2))||number.equals(accountList.get(k).getATMList().get(3))){

                q=money*0.02;

                break;} else if (number.equals(accountList.get(k).getATMList().get(4))||number.equals(accountList.get(k).getATMList().get(5))){

                q=money*0.03;

                break;} else if(number.equals(accountList.get(k).getATMList().get(6))||number.equals(accountList.get(k).getATMList().get(7))||number.equals(accountList.get(k).getATMList().get(8))||number.equals(accountList.get(k).getATMList().get(9))||number.equals(accountList.get(k).getATMList().get(10))){

                q=money*0.04;

                break;}}

        accountList.get(k).setBalance(accountList.get(k).getBalance()-money-q);}

    public void access2(){

        int k=0;double l;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    k=i;break;}}}

        if(accountList.get(k).getBalance()>money&&accountList.get(k).getBalance()>0){

            accountList.get(k).setBalance(accountList.get(k).getBalance()-money);}

        else if(accountList.get(k).getBalance()<money&&accountList.get(k).getBalance()>0){

            l=(money-accountList.get(k).getBalance())*0.05;

            accountList.get(k).setBalance(accountList.get(k).getBalance()-money-l);}

        else if(accountList.get(k).getBalance()<money&&accountList.get(k).getBalance()<=0){

            l=money*0.05;

            accountList.get(k).setBalance(accountList.get(k).getBalance()-money-l);}}

    public void access3() {

        int k = 0;

        double l,q=0;

        for (int i = 0; i < accountList.size(); i++) {

            for (int j = 0; j < accountList.get(i).getCardList().size(); j++) {

                if (card.equals(accountList.get(i).getCardList().get(j))) {

                    k = i;

                    break;}}}

        for (int i = 0; i < accountList.get(k).getATMList().size(); i++) {

            if (number.equals(accountList.get(k).getATMList().get(0)) || number.equals(accountList.get(k).getATMList().get(1)) || number.equals(accountList.get(k).getATMList().get(2)) || number.equals(accountList.get(k).getATMList().get(3))) {

                q = money * 0.02;

                break;} else if (number.equals(accountList.get(k).getATMList().get(4)) || number.equals(accountList.get(k).getATMList().get(5))) {

                q = money * 0.03;

                break;} else if (number.equals(accountList.get(k).getATMList().get(6)) || number.equals(accountList.get(k).getATMList().get(7)) || number.equals(accountList.get(k).getATMList().get(8)) || number.equals(accountList.get(k).getATMList().get(9)) || number.equals(accountList.get(k).getATMList().get(10))) {

                q = money * 0.04;

                break;}}

        if (accountList.get(k).getBalance() >=money&&accountList.get(k).getBalance()>0) {

            accountList.get(k).setBalance(accountList.get(k).getBalance() - money - q);}

        else if(accountList.get(k).getBalance() <money&&accountList.get(k).getBalance()>0){

            l = (money - accountList.get(k).getBalance()) * 0.05;

            accountList.get(k).setBalance(accountList.get(k).getBalance() - money - l - q);}

        else if(accountList.get(k).getBalance() <money&&accountList.get(k).getBalance()<=0){

            l=money*0.05;

            accountList.get(k).setBalance(accountList.get(k).getBalance() - money - l - q);}}}

class Show{

    ArrayList<Account> accountList;

    ArrayList<Account> accountList1;

    String card;

    String password;

    String number;

    double money;

    public Show(ArrayList<Account> accountList,ArrayList<Account> accountList1,String card,String password,String number,double money){

        this.accountList=accountList;this.accountList1=accountList1;this.card=card;this.password=password;this.number=number;this.money=money;}

    public Show(ArrayList<Account> accountList,String card){

        this.accountList=accountList;

        this.card=card;}

    public void show(){

        int k=0;

        String bankname="";

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    k=i;break;}}}

        for(int i=0;i<accountList.get(k).getATMList().size();i++){

            if(number.equals(accountList.get(k).getATMList().get(0))||number.equals(accountList.get(k).getATMList().get(1))||number.equals(accountList.get(k).getATMList().get(2))||number.equals(accountList.get(k).getATMList().get(3))){

                bankname=accountList.get(k).getBanknameList().get(0);

                break;}

            else if (number.equals(accountList.get(k).getATMList().get(4))||number.equals(accountList.get(k).getATMList().get(5))){

                bankname=accountList.get(k).getBanknameList().get(1);

                break;}

            else if(number.equals(accountList.get(k).getATMList().get(6))||number.equals(accountList.get(k).getATMList().get(7))||number.equals(accountList.get(k).getATMList().get(8))||number.equals(accountList.get(k).getATMList().get(9))||number.equals(accountList.get(k).getATMList().get(10))){

                bankname=accountList.get(k).getBanknameList().get(2);

                break;}}

        if(money>=0){//取款

            if(accountList.get(k).getBalance()>=0){

                System.out.printf("业务:取款 "+accountList.get(k).getName()+"在"+bankname+"的"+number+"号ATM机上取款¥%.2f\n",money);}

            else {

                System.out.println("Sorry,your account balance is insufficient.");//输入取款金额大于账户余额

                System.exit(-1);}}

        else{//存款

            money=-money;

            System.out.printf("业务:存款 "+accountList.get(k).getName()+"在"+accountList.get(k).bank.bankname+"的"+number+"号ATM机上存款¥%.2f\n",money);}

        System.out.printf("当前余额为¥%.2f\n",accountList.get(k).getBalance());}

    public void show1(){

        int t=0;

        for(int i=0;i<accountList.size();i++){

            for(int j=0;j<accountList.get(i).getCardList().size();j++){

                if(card.equals(accountList.get(i).getCardList().get(j))){

                    t=i;break;}}}

        System.out.printf("业务:查询余额 ¥%.2f",accountList.get(t).getBalance());}

    public void show2() {

        int k = 0;

        String bankname = "";

        for (int i = 0; i < accountList.size(); i++) {

            for (int j = 0; j < accountList.get(i).getCardList().size(); j++) {

                if (card.equals(accountList.get(i).getCardList().get(j))) {

                    k = i;break;}}}

        for (int i = 0; i < accountList.get(k).getATMList().size(); i++) {

            if (number.equals(accountList.get(k).getATMList().get(0)) || number.equals(accountList.get(k).getATMList().get(1)) || number.equals(accountList.get(k).getATMList().get(2)) || number.equals(accountList.get(k).getATMList().get(3))) {

                bankname = accountList.get(k).getBanknameList().get(0);

                break;} else if (number.equals(accountList.get(k).getATMList().get(4)) || number.equals(accountList.get(k).getATMList().get(5))) {

                bankname = accountList.get(k).getBanknameList().get(1);

                break;} else if (number.equals(accountList.get(k).getATMList().get(6)) || number.equals(accountList.get(k).getATMList().get(7)) || number.equals(accountList.get(k).getATMList().get(8)) || number.equals(accountList.get(k).getATMList().get(9)) || number.equals(accountList.get(k).getATMList().get(10))) {

                bankname = accountList.get(k).getBanknameList().get(2);

                break;}}

        if(money>=0){//取款

            if(accountList.get(k).getBalance()>=(-50000)){

                System.out.printf("业务:取款 "+accountList.get(k).getName()+"在"+bankname+"的"+number+"号ATM机上取款¥%.2f\n",money);} else {

                System.out.println("Sorry,your account balance is insufficient.");//透支金额超过规定最大透支金额

                System.exit(-1);}}

        else{//存款

            money=-money;System.out.printf("业务:存款 "+accountList.get(k).getName()+"在"+accountList.get(k).bank.bankname+"的"+number+"号ATM机上存款¥%.2f\n",money);}

        System.out.printf("当前余额为¥%.2f\n",accountList.get(k).getBalance());}}

class Custom{

    public Custom(){}}

public class Main {

    public static void main(String[] args) {

        ArrayList<String> ATMList1 = new ArrayList<>();ArrayList<Bank> bankList = new ArrayList<>();ArrayList<String> ATMList = new ArrayList<>();ArrayList<String> ATMList2 = new ArrayList<>();ArrayList<String> ATMList3 = new ArrayList<>();

        ATMList1.add("01");ATMList1.add("02");ATMList1.add("03");ATMList1.add("04");

        Bank jsyh = new Bank("中国建设银行", ATMList1);

        bankList.add(jsyh);

        ATMList2.add("05");ATMList2.add("06");

        Bank gsyh = new Bank("中国工商银行", ATMList2);

        bankList.add(gsyh);

        ATMList3.add("07");ATMList3.add("08");ATMList3.add("09");ATMList3.add("10");ATMList3.add("11");

        Bank nyyh = new Bank("中国农业银行", ATMList3);

        bankList.add(nyyh);

        ATMList.add("01");ATMList.add("02");ATMList.add("03");ATMList.add("04");ATMList.add("05");ATMList.add("06");ATMList.add("07");ATMList.add("08");ATMList.add("09");ATMList.add("10");ATMList.add("11");

        ArrayList<String> banknameList = new ArrayList<>();

        banknameList.add("中国建设银行");banknameList.add("中国工商银行");banknameList.add("中国农业银行");

        ArrayList<String> cardList1 = new ArrayList<>();

        ArrayList<Account> accountList = new ArrayList<>();ArrayList<Account> accountList1 = new ArrayList<>();

        cardList1.add("6217000010041315709");cardList1.add("6217000010041315715");

        Account account1 = new Account("杨过", "3217000010041315709", "88888888", 10000.00, bankList, jsyh, cardList1, ATMList, banknameList);

        accountList.add(account1);

        ArrayList<String> cardList2 = new ArrayList<>();

        cardList2.add("6217000010041315718");

        Account account2 = new Account("杨过", "3217000010041315715", "88888888", 10000.00, bankList, jsyh, cardList2, ATMList, banknameList);

        accountList.add(account2);

        ArrayList<String> cardList3 = new ArrayList<>();

        cardList3.add("6217000010051320007");

        Account account3 = new Account("郭靖", "3217000010051320007", "88888888", 10000.00, bankList, jsyh, cardList3, ATMList, banknameList);

        accountList.add(account3);

        ArrayList<String> cardList4 = new ArrayList<>();

        cardList4.add("6222081502001312389");

        Account account4 = new Account("张无忌", "3222081502001312389", "88888888", 10000.00, bankList, gsyh, cardList4, ATMList, banknameList);

        accountList.add(account4);

        ArrayList<String> cardList5 = new ArrayList<>();

        cardList5.add("6222081502001312390");

        Account account5 = new Account("张无忌", "3222081502001312390", "88888888", 10000.00, bankList, gsyh, cardList5, ATMList, banknameList);

        accountList.add(account5);

        ArrayList<String> cardList6 = new ArrayList<>();

        cardList6.add("6222081502001312399");cardList6.add("6222081502001312400");

        Account account6 = new Account("张无忌", "3222081502001312399", "88888888", 10000.00, bankList, gsyh, cardList6, ATMList, banknameList);

        accountList.add(account6);

        ArrayList<String> cardList7 = new ArrayList<>();

        cardList7.add("6222081502051320785");

        Account account7 = new Account("韦小宝", "3222081502051320785", "88888888", 10000.00, bankList, gsyh, cardList7, ATMList, banknameList);

        accountList.add(account7);

        ArrayList<String> cardList8 = new ArrayList<>();

        cardList8.add("6222081502051320786");

        Account account8 = new Account("韦小宝", "3222081502051320786", "88888888", 10000.00, bankList, gsyh, cardList8, ATMList, banknameList);

        accountList.add(account8);

        ArrayList<String> cardList9 = new ArrayList<>();

        cardList9.add("6640000010045442002");cardList9.add("6640000010045442003");

        Account account9 = new Account("张三丰", "3640000010045442002", "88888888", 10000.00, bankList, jsyh, cardList9, ATMList, banknameList);

        accountList.add(account9);accountList1.add(account9);

        ArrayList<String> cardList10 = new ArrayList<>();

        cardList10.add("6640000010045441009");

        Account account10 = new Account("令狐冲", "3640000010045441009", "88888888", 10000.00, bankList, gsyh, cardList10, ATMList, banknameList);

        accountList.add(account10);accountList1.add(account10);

        ArrayList<String> cardList11 = new ArrayList<>();

        cardList11.add("6630000010033431001");

        Account account11 = new Account("乔峰", "3630000010033431001", "88888888", 10000.00, bankList, nyyh, cardList11, ATMList, banknameList);

        accountList.add(account11);accountList1.add(account11);

        ArrayList<String> cardList12 = new ArrayList<>();

        cardList12.add("6630000010033431008");

        Account account12 = new Account("洪七公", "3630000010033431008", "88888888", 10000.00, bankList, nyyh, cardList12, ATMList, banknameList);

        accountList.add(account12);accountList1.add(account12);

        Scanner in = new Scanner(System.in);

        String kp = in.nextLine();

        Check check,check1,check2,check3,check4;

        Custom custom;int C=0;

        if(C!=0)  System.exit(-1);

        while (!kp.contains("#")) {

            String[] shuju = kp.split("\\s+");

            if (shuju.length != 1) {//存取款

                check =check2=check4= new Check(accountList, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                check3 = new Check(accountList, accountList1, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                if (check.check()) {

                    if (check3.check3()) {//贷记账号

                        if (check2.check2()) {

                            Access access3 = new Access(accountList, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                            access3.access3();} else {//未跨行

                            Access access2 = new Access(accountList, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                            access2.access2();}

                        Show show2 = new Show(accountList, accountList1, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                        show2.show2();} else {//借记账号

                        if (check4.check4()) {//金额检查

                            if (check2.check2()) {//跨行

                                Access access1 = new Access(accountList, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                                access1.access1();} else {//未跨行

                                Access access = new Access(accountList, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                                access.access();}

                            Show show = new Show(accountList, accountList1, shuju[0], shuju[1], shuju[2], Double.parseDouble(shuju[3]));

                            show.show();}}}} else {//余额

                check1 = new Check(accountList, shuju[0]);

                if (check1.check1()) {

                    Show show1 = new Show(accountList, shuju[0]);

                    show1.show1();}}

            kp = in.nextLine();}}}

分析:

 

 

 

 

和上一题基本相同,难度也有了一定提升,但是在上一题的基础上修改代码就容易很多了,和上一题相比这道题加入了账号种类,加入了借贷功能,也加入了一些用户数据,其他方面就没有太大改变。

 

 

posted on 2021-12-18 19:18  高抬贵手  阅读(42)  评论(0编辑  收藏  举报