NCHU-pta题目集7-9总结

迎来了第三次博客,本次博客围绕学校pta作业集7-9做出的总结。话不多说,上第一个题目。

 

pta题目集7-1:

7-1 图形卡片排序游戏 (40 分)
 
 掌握类的继承、多态性使用方法以及接口的应用。详见作业指导书 2020-OO第07次作业-1指导书V1.0.pdf

输入格式:

  • 首先,在一行上输入一串数字(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

其实说实话,这题目集7的两道题目可以一起拿来讨论的,所以,这里我们把这两题拿一起来分析。

以下是题目集7-2:

7-2 图形卡片分组游戏 (60 分)
 

掌握类的继承、多态性使用方法以及接口的应用。 具体需求参考作业指导书。

2021-OO第07次作业-2指导书V1.0.pdf

输入格式:

  • 在一行上输入一串数字(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

先给出两个题目的复杂度以及相应类图:

 

第一题的复杂度:

Metrics Details For File 'Main1.java'
--------------------------------------------------------------------------------------------

Parameter Value
========= =====
Project Directory E:\JAVA_WORKSPACE\实验专用\src\复杂度\
Project Name
Checkpoint Name Baseline
File Name Main1.java
Lines 380
Statements 234
Percent Branch Statements 18.8
Method Call Statements 57
Percent Lines with Comments 5.8
Classes and Interfaces 9
Methods per Class 8.11
Average Statements per Method 2.08
Line Number of Most Complex Method 76
Name of Most Complex Method DealCardList.showResult()
Maximum Complexity 30
Line Number of Deepest Block 175
Maximum Block Depth 6
Average Block Depth 2.28
Average Complexity 2.19

--------------------------------------------------------------------------------------------
Most Complex Methods in 8 Class(es): Complexity, Statements, Max Depth, Calls

Card.Card() 1, 0, 0, 0
Card.Card() 1, 0, 0, 0
Card.compareTo() 1, 1, 2, 0
Card.getShape() 1, 1, 2, 0
Card.setShape() 1, 1, 2, 0
DealCardList.cardSort() 1, 0, 0, 0
DealCardList.DealCardList() 2, 2, 2, 2
DealCardList.DealCardList() 1, 0, 0, 0
DealCardList.getAllArea() 1, 1, 2, 1
DealCardList.getList() 1, 1, 2, 0
DealCardList.setList() 1, 1, 2, 0
DealCardList.showResult() 30, 83, 6, 39
DealCardList.validate() 5, 8, 4, 2
juxing.compareTo() 1, 1, 2, 1
juxing.compareTo() 1, 1, 2, 0
juxing.compareTo() 1, 1, 2, 0
juxing.compareTo() 1, 1, 2, 0
juxing.compareTo() 1, 1, 2, 0
juxing.compareTo() 1, 1, 2, 0
juxing.compareTo() 1, 2, 2, 0
juxing.compareTo() 1, 0, 0, 0
Main1.main() 5, 13, 4, 10
sanjiao.compareTo() 8, 6, 3, 0
sanjiao.compareTo() 1, 2, 2, 0
sanjiao.compareTo() 1, 3, 2, 0
sanjiao.compareTo() 1, 0, 0, 0
Shape.compareTo() 1, 1, 2, 1
Shape.compareTo() 1, 1, 2, 0
Shape.compareTo() 1, 1, 2, 0
Shape.compareTo() 1, 1, 2, 0
Shape.compareTo() 1, 1, 2, 0
Shape.compareTo() 1, 0, 0, 0
Shape.compareTo() 1, 0, 0, 0
tixing.compareTo() 5, 4, 2, 0
tixing.compareTo() 1, 1, 2, 0
tixing.compareTo() 1, 3, 2, 0
tixing.compareTo() 1, 0, 0, 0
yuan.compareTo() 3, 4, 3, 0
yuan.compareTo() 1, 1, 2, 0
yuan.compareTo() 1, 1, 2, 0
yuan.compareTo() 1, 1, 2, 0
yuan.compareTo() 1, 1, 2, 0
yuan.compareTo() 1, 0, 0, 0

--------------------------------------------------------------------------------------------
Block Depth Statements

0 18
1 64
2 72
3 24
4 30
5 22
6 4
7 0
8 0
9+ 0
--------------------------------------------------------------------------------------------

 

 

 

 

Metrics Details For File 'Main1.java'
--------------------------------------------------------------------------------------------

Parameter                Value
=========                =====
Project Directory            C:\Users\86153\Desktop\复杂度\
Project Name                
Checkpoint Name                Baseline
File Name                Main1.java
Lines                    380
Statements                234
Percent Branch Statements        18.8
Method Call Statements            57
Percent Lines with Comments        5.8
Classes and Interfaces            9
Methods per Class            8.11
Average Statements per Method        2.08
Line Number of Most Complex Method    76
Name of Most Complex Method        DealCardList.showResult()
Maximum Complexity            30
Line Number of Deepest Block        175
Maximum Block Depth            6
Average Block Depth            2.28
Average Complexity            2.19

--------------------------------------------------------------------------------------------
Most Complex Methods in 8 Class(es):    Complexity, Statements, Max Depth, Calls

Card.Card()                1, 0, 0, 0
Card.Card()                1, 0, 0, 0
Card.compareTo()            1, 1, 2, 0
Card.getShape()                1, 1, 2, 0
Card.setShape()                1, 1, 2, 0
DealCardList.cardSort()            1, 0, 0, 0
DealCardList.DealCardList()        2, 2, 2, 2
DealCardList.DealCardList()        1, 0, 0, 0
DealCardList.getAllArea()        1, 1, 2, 1
DealCardList.getList()            1, 1, 2, 0
DealCardList.setList()            1, 1, 2, 0
DealCardList.showResult()        30, 83, 6, 39
DealCardList.validate()            5, 8, 4, 2
juxing.compareTo()            1, 1, 2, 1
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 2, 2, 0
juxing.compareTo()            1, 0, 0, 0
Main1.main()                5, 13, 4, 10
sanjiao.compareTo()            8, 6, 3, 0
sanjiao.compareTo()            1, 2, 2, 0
sanjiao.compareTo()            1, 3, 2, 0
sanjiao.compareTo()            1, 0, 0, 0
Shape.compareTo()            1, 1, 2, 1
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 0, 0, 0
Shape.compareTo()            1, 0, 0, 0
tixing.compareTo()            5, 4, 2, 0
tixing.compareTo()            1, 1, 2, 0
tixing.compareTo()            1, 3, 2, 0
tixing.compareTo()            1, 0, 0, 0
yuan.compareTo()            3, 4, 3, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 0, 0, 0

--------------------------------------------------------------------------------------------
Block Depth                Statements

0                    18
1                    64
2                    72
3                    24
4                    30
5                    22
6                    4
7                    0
8                    0
9+                    0
--------------------------------------------------------------------------------------------

 

 

 

 

由类图我们可以分析到圆类,长方形类,以及梯形,三角形类,卡片类都继承于shape类,比较这个类则是实现卡片类的一个接口。

而第二题,则在第一题的基础上,增加了对输入图片形状的分类,以及在分类后的计算面积后的一个排序问题。接下来,我们来解

决这一个个问题。

首先,我们要对输入输出这个问题进行解决,题目要求,以零作为输入结束的志。我们采用以下代码解决这个问题:

 

ArrayList<Integer> list = new ArrayList<Integer>();
        int num = input.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 = input.nextInt();
        }

接下来,进入到判断阶段,validate方法用于判断数据是否出现错误,showResult 这个方法用于展示输出的结

果。getAllArea 这个方法是空的,是为了后面的接口可以实现这个方法。本次实验中,对计算出来的数据,我

采用的是,冒泡排序冒泡排序再实现少部分数据排序来说,还是挺好用的。接下来的代码就是,各种图形类继

承关系,具体的类图上显示的很清楚,就不再过多赘述。

两题需要注意的地方就是输入输出的格式,以及,后面这道题目,需要对不同图像面积和做出排序,并且,分

类打印出来,在这同时排好序。

附上两题的通过代码:

import javax.lang.model.type.NullType;
import java.awt.*;
import java.util.Scanner;
import java.util.regex.*;
import java.text.DecimalFormat;
import java.util.Arrays;
import static java.lang.System.exit;
import static java.lang.System.in;

import java.util.ArrayList;
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()){//panduan为判断图型是否正确
            System.out.println("Wrong Format");
            System.exit(0);
        }
        dealCardList.showResult();//展示结果
        input.close();
    }
}
class DealCardList{

    DealCardList(){

    }

    ArrayList<Integer>list = new ArrayList<Integer>();
    DealCardList(ArrayList<Integer>list1){
        for(int i=0;i<list1.size();i++)
            //System.out.println(list1.get(i));
            setList(list1);
    }

    public void setList(ArrayList<Integer> list) {
        this.list = list;
    }

    public ArrayList<Integer> getList() {
        return list;
    }

    public boolean validate(){
        int flag=0;
        //System.out.println(list.size());
        for(int i=0;i<list.size();i++){
            //System.out.println(list.get(i));
            if(list.get(i)==0){
                flag=1;
                break;
            }
        }
        //System.out.println(flag);
        if(flag==0){
            return true;
        }
        else
            return false;
        //return ture;
    }
    public void cardSort(){

    }
    //double C[]=new double[list.size()];
    public void showResult(){
        double B[]=new double[list.size()];
        double Sum=0;
        int flag=0;
        for(int i=0,j=0;i<list.size();i++,j++){
            if(list.get(i)==1){
                double r=Main.input.nextDouble();
                yuan A=new yuan(r);
                if(A.validate()){
                    double sum=A.getAera();
                    B[j]=sum;
                    //System.out.println(B[j]);
                    Sum+=sum;
                    //System.out.print("Circle:"+A.getAera()+" ");
                }else {
                    //System.out.println("Wrong Format");
                    flag=1;
                }
            }
            if(list.get(i)==2){
                double c= Main.input.nextDouble();
                double k= Main.input.nextDouble();
                juxing A=new juxing(c,k);
                if(A.validate()){
                    double sum=A.getAera();
                    B[j]=sum;
                    Sum+=sum;
                    //System.out.print("Circle:"+A.getAera()+" ");
                }else {
                    //System.out.println("Wrong Format");
                    flag=1;
                }
            }
            if(list.get(i)==3){
                double a=Main.input.nextDouble();
                double b=Main.input.nextDouble();
                double c= Main.input.nextDouble();
                sanjiao A=new sanjiao(a,b,c);
                if(A.validate()){
                    double sum=A.getAera();
                    B[j]=sum;
                    Sum+=sum;

                    //System.out.print("Circle:"+A.getAera()+" ");
                }else {
                    //System.out.println("Wrong Format");
                    flag=1;
                }
            }
            if(list.get(i)==4){
                double a=Main.input.nextDouble();
                double b=Main.input.nextDouble();
                double c=Main.input.nextDouble();
                tixing A=new tixing(a,b,c);
                if(A.validate()){
                    double sum=A.getAera();
                    B[j]=sum;
                    Sum+=sum;
                    //System.out.print("Circle:"+A.getAera()+" ");
                }else {
                    //System.out.println("Wrong Format");
                    flag=1;
                }
            }
        }
        if(flag==1){
            System.out.println("Wrong Format");
            exit(0);
        }
        System.out.println("The original list:");
        for(int i=0;i<list.size();i++){
            if(list.get(i)==1){
                System.out.printf("Circle:%.2f ",B[i]);
            }
            if(list.get(i)==2){
                System.out.printf("Rectangle:%.2f ",B[i]);
            }
            if(list.get(i)==3){
                System.out.printf("Triangle:%.2f ",B[i]);
            }
            if(list.get(i)==4){
                System.out.printf("Trapezoid:%.2f ",B[i]);
            }
        }
        //double[] C = Arrays.copyOf(B, list.size());
        System.out.println();
        System.out.println("The sorted list:");
        double max=-1;
        int temp=0;
        for(int j=0;j<list.size();j++) {
            for (int i = 0; i < B.length; i++) {
                if (B[i] > max) {
                    max = B[i];
                    temp = i;
                }
            }
            for(int k=0;k<list.size();k++){
                if(k==temp){
                    if(list.get(k)==1){
                        System.out.printf("Circle:%.2f ",B[temp]);
                    }
                    if(list.get(k)==2){
                        System.out.printf("Rectangle:%.2f ",B[temp]);
                    }
                    if(list.get(k)==3){
                        System.out.printf("Triangle:%.2f ",B[temp]);
                    }
                    if(list.get(k)==4){
                        System.out.printf("Trapezoid:%.2f ",B[temp]);
                    }
                }
            }
            B[temp]=0;
            temp=0;
            max=-1;
        }
        System.out.println();
        System.out.printf("Sum of area:%.2f",Sum);
        if(list.size()==0){
            //System.out.println();
            //System.out.println("Sum of area:0.00");
        }

    }
    public double getAllArea(){
        return getAllArea();
    }
}
class Card implements comparable{
    Shape shape;
    Card(){

    }
    Card(Shape shape){

    }

    public Shape getShape() {
        return shape;
    }

    public void setShape(Shape shape) {
        this.shape = shape;
    }
    public int compareTo(Card card){
        return 1;
    }
}
interface comparable{
    //public int compareTo();
}
abstract class Shape{
    String shapeName;
    Shape(){

    }
    Shape(String shapeName){

    }

    public String getShapeName() {
        return shapeName;
    }

    public void setShapeName(String shapeName) {
        this.shapeName = shapeName;
    }
    public double getAera(){
        return 1;
    }
    public boolean validate(){
        return true;
    }

    @Override
    public String toString() {
        return super.toString();
    }
}
class yuan extends Shape{
    double r;
    yuan(){

    }
    yuan(double r){
        this.r=r;
    }
    double getR(){
        return r;
    }
    void setR(){
        this.r=r;
    }

    @Override
    public double getAera() {
        return r*r*Math.PI;
    }

    @Override
    public boolean validate() {
        if(r<=0){
            return false;
        }
        else
            return true;
    }
}
class sanjiao extends Shape{
    double c;
    double s;
    double y;
    sanjiao(){

    }
    sanjiao(double a,double b,double c){
        this.c = a;
        this.s = b;
        this.y = c;
    }

    @Override
    public double getAera() {
        double w = (c + s + y) / 2;
        return Math.sqrt(w * (w - c) * (w-s) * (w - y));
    }

    @Override
    public boolean validate() {
        if ( c < 0 || s < 0 || y < 0) {
            return false;
        }
        else if(c+s<=y||c+y<=s||s+y<=c){
            return false;
        }
        else
            return true;
    }
}
class juxing extends Shape{
    double chang;
    double kuan;
    juxing(){

    }
    juxing(double chang,double kuan){
        this.chang=chang;
        this.kuan=kuan;
    }

    public double getChang() {
        return chang;
    }

    public void setChang(double chang) {
        this.chang = chang;
    }

    public double getKuan() {
        return kuan;
    }

    public void setKuan(double kuan) {
        this.kuan = kuan;
    }

    @Override
    public double getAera() {
        return chang * kuan;
    }

    @Override
    public boolean validate() {
        return super.validate();
    }
}
class tixing extends Shape{
    double a;
    double b;
    double c;
    tixing(){

    }
    tixing(double a,double b,double c){
        this.a = a;
        this.b = b;
        this.c = c;
    }

    @Override
    public double getAera() {
        return (a+b)*c/2;
    }

    @Override
    public boolean validate() {
        if(a>0&&b>0&&c>0)
            return true;
        else
            return false;
    }
}

一下是第二题:

import java.util.Scanner;
import static java.lang.System.exit;
import static java.lang.System.in;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
    public static Scanner input = new Scanner(System.in);
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        int num = input.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 = input.nextInt();
        }
        DealCardList dealCardList = new DealCardList(list);
        if(!dealCardList.validate()){//panduan为判断图型是否正确
            System.out.println("Wrong Format");
            System.exit(0);
        }
        dealCardList.showResult();//展示结果
        input.close();
    }
}
class DealCardList{
    DealCardList(){ }
    ArrayList<Integer>list = new ArrayList<Integer>();
    DealCardList(ArrayList<Integer>list1){
        for(int i=0;i<list1.size();i++)
            setList(list1);
    }
    public void setList(ArrayList<Integer> list) {
        this.list = list;
    }
    public ArrayList<Integer> getList() {
        return list;
    }
    public boolean validate(){
        int flag=0;
        for(int i=0;i<list.size();i++){
            if(list.get(i)==0){
                flag=1;
                break;
            }
        }
        if(flag==0){
            return true;
        }
        else
            return false;
    }
    public void cardSort(){

    }
    public void showResult() {
        double B[] = new double[list.size()];
        
        int flag = 0;
        for (int i = 0, j = 0; i < list.size(); i++, j++) {
            if (list.get(i) == 1) {
                double r = Main.input.nextDouble();
                yuan A = new yuan(r);
                if (A.validate()) {
                    double sum = A.getAera();
                    B[j] = sum;
                    
                } else {
                    flag = 1;
                }
            }
            if (list.get(i) == 2) {
                double c = Main.input.nextDouble();
                double k = Main.input.nextDouble();
                juxing A = new juxing(c, k);
                if (A.validate()) {
                    double sum = A.getAera();
                    B[j] = sum;
                    
                } else {
                    flag = 1;
                }
            }
            if (list.get(i) == 3) {
                double a = Main.input.nextDouble();
                double b = Main.input.nextDouble();
                double c = Main.input.nextDouble();
                sanjiao A = new sanjiao(a, b, c);
                if (A.validate()) {
                    double sum = A.getAera();
                    B[j] = sum;
                    
                } else {
                    flag = 1;
                }
            }
            if (list.get(i) == 4) {
                double a = Main.input.nextDouble();
                double b = Main.input.nextDouble();
                double c = Main.input.nextDouble();
                tixing A = new tixing(a, b, c);
                if (A.validate()) {
                    double sum = A.getAera();
                    B[j] = sum;
                    
                } else {
                    flag = 1;
                }
            }
        }
        if (flag == 1) {
            System.out.println("Wrong Format");
            exit(0);
        }
        System.out.println("The original list:");
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == 1) {
                System.out.printf("Circle:%.2f ", B[i]);
            }
            if (list.get(i) == 2) {
                System.out.printf("Rectangle:%.2f ", B[i]);
            }
            if (list.get(i) == 3) {
                System.out.printf("Triangle:%.2f ", B[i]);
            }
            if (list.get(i) == 4) {
                System.out.printf("Trapezoid:%.2f ", B[i]);
            }
        }
        System.out.printf("]\n");
        System.out.println("The Separated List:");
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == 1) {
                System.out.printf("Circle:%.2f ", B[i]);
            }
        }
        System.out.print("][");
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == 2) {
                System.out.printf("Rectangle:%.2f ", B[i]);
            }
        }
        System.out.print("][");

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == 3) {
                System.out.printf("Triangle:%.2f ", B[i]);
            }
        }
        System.out.print("][");
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == 4) {
                System.out.printf("Trapezoid:%.2f ", B[i]);
            }
        }
        System.out.print("]");
        System.out.println();
        System.out.println("The Separated sorted List:");
        double yuan[] = new double[list.size()+1];
        double sumyuan=0;
        double jx[] = new double[list.size()+1];
        double sumjx=0;
        double sj[] = new double[list.size()+1];
        double sumsj=0;
        double tx[] = new double[list.size()+1];
        double sumtx=0;
        double zhong[]=new double[list.size()+3];
        for (int i = 0,j=0,k=0,l=0; i < list.size(); i++) {
            if (list.get(i) == 1) {
                yuan[j]=B[i];
                sumyuan+=B[i];
                j++;
            }
            if (list.get(i) == 2) {
                jx[j]=B[i];
                sumjx+=B[i];
                j++;
            }
            if (list.get(i) == 3) {
                sj[k]=B[i];
                sumsj+=B[i];
                k++;
            }
            if (list.get(i) == 4) {
                tx[l]=B[i];
                sumtx+=B[i];
                l++;
            }
        }
        System.out.print("[");
        sort(yuan);
        for(int i=0;yuan[i]!=0;i++){
            System.out.printf("Circle:%.2f ",yuan[i]);
        }
        System.out.print("][");
        int u=0;
        zhong[u++]=sumyuan;
        sort(jx);
        for(int i=0;jx[i]!=0;i++){
            System.out.printf("Rectangle:%.2f ",jx[i]);
        }
        System.out.print("][");
        zhong[u++]=sumjx;
        sort(sj);
        for(int i=0;sj[i]!=0;i++){
            System.out.printf("Triangle:%.2f ",sj[i]);
        }
        System.out.print("][");
        zhong[u++]=sumsj;
        sort(tx);
        for(int i=0;tx[i]!=0;i++){
            System.out.printf("Trapezoid:%.2f ",tx[i]);
        }
        System.out.print("]");
        zhong[u++]=sumtx;
        sort(zhong);
        System.out.printf("\nThe max area:%.2f",zhong[0]);
    }
    public double getAllArea(){
        return getAllArea();
    }
    public void sort(double a[]){
        int N = a.length;
        for (int j = 0; j < N - 1; j++)//冒泡排序
        {
            for (int i = 0; i < N - j - 1; i++) {
                if (a[i] < a[i + 1]) {
                    double zjbl = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = zjbl;
                }
            }
        }
    }
}
class Card implements comparable{
    Shape shape;
    Card(){
    }
    Card(Shape shape){
    }
    public Shape getShape() {
        return shape;
    }
    public void setShape(Shape shape) {
        this.shape = shape;
    }
    public int compareTo(Card card){
        return 1;
    }
}
interface comparable{
}
abstract class Shape{
    String shapeName;
    Shape(){
    }
    Shape(String shapeName){
    }
    public String getShapeName() {
        return shapeName;
    }
    public void setShapeName(String shapeName) {
        this.shapeName = shapeName;
    }
    public double getAera(){
        return 1;
    }
    public boolean validate(){
        return true;
    }
    @Override
    public String toString() {
        return super.toString();
    }
}
class yuan extends Shape{
    double r;
    yuan(){
    }
    yuan(double r){
        this.r=r;
    }
    double getR(){
        return r;
    }
    void setR(){
        this.r=r;
    }
    @Override
    public double getAera() {
        return r*r*Math.PI;
    }
    @Override
    public boolean validate() {
        if(r<=0){
            return false;
        }
        else
            return true;
    }
}
class sanjiao extends Shape{
    double c;
    double s;
    double y;
    sanjiao(){

    }
    sanjiao(double a,double b,double c){
        this.c = a;
        this.s = b;
        this.y = c;
    }
    @Override
    public double getAera() {
        double w = (c + s + y) / 2;
        return Math.sqrt(w * (w - c) * (w-s) * (w - y));
    }
    @Override
    public boolean validate() {
        if ( c < 0 || s < 0 || y < 0) {
            return false;
        }
        else if(c+s<=y||c+y<=s||s+y<=c){
            return false;
        }
        else
            return true;
    }
}
class juxing extends Shape{
    double chang;
    double kuan;
    juxing(){

    }
    juxing(double chang,double kuan){
        this.chang=chang;
        this.kuan=kuan;
    }
    public double getChang() {
        return chang;
    }
    public void setChang(double chang) {
        this.chang = chang;
    }
    public double getKuan() {
        return kuan;
    }
    public void setKuan(double kuan) {
        this.kuan = kuan;
    }
    @Override
    public double getAera() {
        return chang * kuan;
    }
    @Override
    public boolean validate() {
        return super.validate();
    }
}
class tixing extends Shape{
    double a;
    double b;
    double c;
    tixing(){
    }
    tixing(double a,double b,double c){
        this.a = a;
        this.b = b;
        this.c = c;
    }
    @Override
    public double getAera() {
        return (a+b)*c/2;
    }
    @Override
    public boolean validate() {
        if(a>0&&b>0&&c>0)
            return true;
        else
            return false;
    }
}

现在来讨论题目集8

题目集8为atm的类结构设计,以下为题目要求:

7-1 ATM机类结构设计(一) (100 分)
 

设计ATM仿真系统,具体要求参见作业说明。 OO作业8-1题目说明.pdf

输入格式:

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

  • 存款、取款功能输入数据格式: 卡号 密码 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

而题目集9相对于题目集8,就是一个升级版,功能更加复杂一点。我们将两个题目合并起来讨论。接下来给出题目集9:

7-1 ATM机类结构设计(二) (100 分)
 

设计ATM仿真系统,具体要求参见作业说明。 OO作业9-1题目说明.pdf

输入格式:

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

  • 取款功能输入数据格式: 卡号 密码 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

一下给出两个题目类图,及复杂度:

 

 

Metrics Details For File 'Main1.java'
--------------------------------------------------------------------------------------------

Parameter                Value
=========                =====
Project Directory            E:\JAVA_WORKSPACE\实验专用\src\复杂度\
Project Name                90
Checkpoint Name                Baseline
File Name                Main1.java
Lines                    282
Statements                118
Percent Branch Statements        17.8
Method Call Statements            87
Percent Lines with Comments        0.0
Classes and Interfaces            6
Methods per Class            3.50
Average Statements per Method        3.52
Line Number of Most Complex Method    8
Name of Most Complex Method        Main1.main()
Maximum Complexity            23
Line Number of Deepest Block        32
Maximum Block Depth            6
Average Block Depth            2.19
Average Complexity            2.10

--------------------------------------------------------------------------------------------
Most Complex Methods in 5 Class(es):    Complexity, Statements, Max Depth, Calls

Gongshang.getAtm()            1, 1, 2, 0
Gongshang.getUser()            1, 1, 2, 0
Gongshang.setAtm()            1, 1, 2, 0
Gongshang.setUser()            1, 1, 2, 0
Jianshe.getAtm()            1, 1, 2, 0
Jianshe.getUser()            1, 1, 2, 0
Jianshe.setAtm()            1, 1, 2, 0
Jianshe.setUser()            1, 1, 2, 0
Main1.main()                23, 43, 6, 59
User.getName()                1, 1, 2, 0
User.getZhanghu()            1, 1, 2, 0
User.setName()                1, 1, 2, 0
User.setZhanghu()            1, 1, 2, 0
User.User()                1, 2, 2, 0
User.User()                1, 0, 0, 0
yinglian.getGongshang()            1, 1, 2, 0
yinglian.getJianshe()            1, 1, 2, 0
yinglian.setGongshang()            1, 1, 2, 0
yinglian.setJianshe()            1, 1, 2, 0
yinglian.yinglian()            1, 2, 2, 0

--------------------------------------------------------------------------------------------
Block Depth                Statements

0                    12
1                    32
2                    36
3                    14
4                    10
5                    12
6                    2
7                    0
8                    0
9+                    0
--------------------------------------------------------------------------------------------

 

 

题目集9:

Metrics Details For File 'Main1.java'
--------------------------------------------------------------------------------------------

Parameter                Value
=========                =====
Project Directory            C:\Users\86153\Desktop\复杂度\
Project Name                
Checkpoint Name                Baseline
File Name                Main1.java
Lines                    380
Statements                234
Percent Branch Statements        18.8
Method Call Statements            57
Percent Lines with Comments        5.8
Classes and Interfaces            9
Methods per Class            8.11
Average Statements per Method        2.08
Line Number of Most Complex Method    76
Name of Most Complex Method        DealCardList.showResult()
Maximum Complexity            30
Line Number of Deepest Block        175
Maximum Block Depth            6
Average Block Depth            2.28
Average Complexity            2.19

--------------------------------------------------------------------------------------------
Most Complex Methods in 8 Class(es):    Complexity, Statements, Max Depth, Calls

Card.Card()                1, 0, 0, 0
Card.Card()                1, 0, 0, 0
Card.compareTo()            1, 1, 2, 0
Card.getShape()                1, 1, 2, 0
Card.setShape()                1, 1, 2, 0
DealCardList.cardSort()            1, 0, 0, 0
DealCardList.DealCardList()        2, 2, 2, 2
DealCardList.DealCardList()        1, 0, 0, 0
DealCardList.getAllArea()        1, 1, 2, 1
DealCardList.getList()            1, 1, 2, 0
DealCardList.setList()            1, 1, 2, 0
DealCardList.showResult()        30, 83, 6, 39
DealCardList.validate()            5, 8, 4, 2
juxing.compareTo()            1, 1, 2, 1
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 1, 2, 0
juxing.compareTo()            1, 2, 2, 0
juxing.compareTo()            1, 0, 0, 0
Main1.main()                5, 13, 4, 10
sanjiao.compareTo()            8, 6, 3, 0
sanjiao.compareTo()            1, 2, 2, 0
sanjiao.compareTo()            1, 3, 2, 0
sanjiao.compareTo()            1, 0, 0, 0
Shape.compareTo()            1, 1, 2, 1
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 1, 2, 0
Shape.compareTo()            1, 0, 0, 0
Shape.compareTo()            1, 0, 0, 0
tixing.compareTo()            5, 4, 2, 0
tixing.compareTo()            1, 1, 2, 0
tixing.compareTo()            1, 3, 2, 0
tixing.compareTo()            1, 0, 0, 0
yuan.compareTo()            3, 4, 3, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 1, 2, 0
yuan.compareTo()            1, 0, 0, 0

--------------------------------------------------------------------------------------------
Block Depth                Statements

0                    18
1                    64
2                    72
3                    24
4                    30
5                    22
6                    4
7                    0
8                    0
9+                    0
--------------------------------------------------------------------------------------------

 

 

这两题类图可谓是相当的复杂,可能是我写的有那么一点点问题,题目集9这道题目我还没有拿满分,只有那么个80分

类图的主要关系为:

中国银联是一个最大的父类,他们下由,银行继承,银行下设有,用户,账户,银行卡。银行下由ATM继承。

题目开始,输入环节由以下代码完成:

Scanner input = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        String str = input.nextLine();
        boolean isMatch = Pattern.matches("#", str);
        while (isMatch == false) {
            sb.append(str);
            sb.append("\n");
            str = input.nextLine();
            isMatch = Pattern.matches("#", str);
        }

在输入结束后,用字符串分割,将数据分割成一行一行,然后将每一行每一个数据,存入到数组中,方便后续操作。

然后对输入的数据进行对比,对比我采用的是字符串比较,分别对应每一个数据,有不同的输出方式。后面就是各

个类,以及类里面的方法。比如在账户类里面设置了不同用户的不同信息,而且设置了查询余额的方法。还有计算

计息的函数。末尾一个类里由判断输入是否正确的方法。具体方法看代码。

import java.awt.*;
import java.lang.reflect.Array;
import java.util.Scanner;
import java.time.LocalDateTime;
import java.util.regex.*;
import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        String str = input.nextLine();
        boolean isMatch = Pattern.matches("#", str);
        while (isMatch == false) {
            sb.append(str);
            sb.append("\n");
            str = input.nextLine();
            isMatch = Pattern.matches("#", str);
        }
        String shuju = String.valueOf(sb);
        //System.out.println(shuju.length());
        String[] cunshuju1 = shuju.split("\n");
        int i = 0, j = 0, k = 0, cwsm = 0, temp = 0;
        GetBalance G=new GetBalance();

        for (i = 0; i < cunshuju1.length; i++) {
            String cunshuju2 = String.valueOf(cunshuju1[i]);
            String[] cunshuju3 = cunshuju2.split("\\s+");
            Zhanghu Z=new Zhanghu(cunshuju3[0]);
            if (cunshuju3.length != 1) {
                for (j = 0; j < cunshuju3.length; j++) {
                    //System.out.println(cunshuju3[j]);
                    ValidateDate V = new ValidateDate(cunshuju3[0], cunshuju3[2]);

                    if (V.pdkh()==1 && V.pdatmid()==1) {
                        WithDraw A = new WithDraw(cunshuju3[0], cunshuju3[1], cunshuju3[2], Double.parseDouble(cunshuju3[3]));
                        A.withdraw();
                        break;
                    }
                    else {
                        break;
                    }
                }
            }
            else {
                String []shuju1=new String[]{"6217000010041315709","6217000010041315715","6217000010041315718","6217000010051320007","6222081502001312389","6222081502001312390","6222081502001312399","6222081502001312400","6222081502051320785","6222081502051320786"};

                if (Z.getZhanghu().equals(shuju1[0]) || Z.getZhanghu().equals(shuju1[1]) || Z.getZhanghu().equals(shuju1[2])) {
                    System.out.println(String.format("¥%.2f",Z.getYe() ));
                }
                if (Z.getZhanghu().equals(shuju1[3])) {
                    System.out.println(String.format("¥%.2f",Z.getYe1() ));
                }
                if (Z.getZhanghu().equals(shuju1[4]) || Z.getZhanghu().equals(shuju1[5]) || Z.getZhanghu().equals(shuju1[6])|| Z.getZhanghu().equals(shuju1[7])) {
                    System.out.println(String.format("¥%.2f",Z.getYe2() ));;
                }
                if (Z.getZhanghu().equals(shuju1[8]) || Z.getZhanghu().equals(shuju1[9])) {
                    System.out.println(String.format("¥%.2f",Z.getYe3() ));
                }
            }
        }
    }
}
class yinglian{
    private Jianshe jianshe;
    private Gongshang gongshang;
    yinglian(Jianshe jianshe,Gongshang gongshang){
        this.jianshe=jianshe;
        this.gongshang=gongshang;
    }

    public void setJianshe(Jianshe jianshe) {
        this.jianshe = jianshe;
    }

    public Jianshe getJianshe() {
        return jianshe;
    }

    public void setGongshang(Gongshang gongshang) {
        this.gongshang = gongshang;
    }

    public Gongshang getGongshang() {
        return gongshang;
    }
}
class Jianshe{
    private ATM atm;
    private User user;

    public ATM getAtm() {
        return atm;
    }

    public void setAtm(ATM atm) {
        this.atm = atm;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}
class Gongshang{
    private ATM atm;
    private User user;

    public ATM getAtm() {
        return atm;
    }

    public void setAtm(ATM atm) {
        this.atm = atm;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}
class ATM{
    int Atmid;

    public int getAtmid() {
        return Atmid;
    }

    public void setAtmid(int atmid) {
        Atmid = atmid;
    }
}
class User{
    String a,b;
    User(){

    }
    User(String a){
        this.a=a;
        this.b=b;
    }
    private Zhanghu zhanghu;
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Zhanghu getZhanghu() {
        return zhanghu;
    }

    public void setZhanghu(Zhanghu zhanghu) {
        this.zhanghu = zhanghu;
    }
    String []shuju=new String[]{"6217000010041315709","6217000010041315715","6217000010041315718","6217000010051320007","6222081502001312389","6222081502001312390","6222081502001312399","6222081502001312400","6222081502051320785","6222081502051320786"};
    String Getname(){
        if(shuju[0].equals(a)||shuju[1].equals(a)||shuju[2].equals(a)){
            return "杨过";
        }
        if(shuju[3].equals(a)){
            return ("郭靖");
        }
        if(shuju[4].equals(a)||shuju[5].equals(a)||shuju[6].equals(a)||shuju[7].equals(a)){
            return ("张无忌");
        }
        if(shuju[8].equals(a)||shuju[9].equals(a)){
            return ("韦小宝");
        }
        else
            return "0";
    }
    String Getyhname(){
        if(shuju[0].equals(a)||shuju[1].equals(a)||shuju[2].equals(a)){
            return "中国建设银行";
        }
        if(shuju[3].equals(a)){
            return ("中国建设银行");
        }
        if(shuju[4].equals(a)||shuju[5].equals(a)||shuju[6].equals(a)||shuju[7].equals(a)){
            return ("中国工商银行");
        }
        if(shuju[8].equals(a)||shuju[9].equals(a)){
            return ("中国工商银行");
        }
        else
            return "0";
    }
}
class Zhanghu{
    private String zhanghu;
    Zhanghu(String A){
        this.zhanghu=A;
    }
    static private double ye=10000;
    static private double ye1=10000;
    static private double ye2=10000;
    static private double ye3=10000;
    public void setZhanghu(String zhanghu) {
        this.zhanghu = zhanghu;
    }

    public String getZhanghu() {
        return zhanghu;
    }

    private Yinghangka yinghangka;

    public void setYe(double ye) {
        this.ye = ye;
    }

    public double getYe() {
        return ye;
    }
    public double getYe1() {
        return ye1;
    }

    public void setYe1(double ye1) {
        this.ye1 = ye1;
    }

    public double getYe2() {
        return ye2;
    }

    public void setYe2(double ye2) {
        this.ye2 = ye2;
    }

    public double getYe3() {
        return ye3;
    }

    public void setYe3(double ye3) {
        this.ye3 = ye3;
    }



    public void setYinghangka(Yinghangka yinghangka) {
        this.yinghangka = yinghangka;
    }

    public Yinghangka getYinghangka() {
        return yinghangka;
    }
}
class Yinghangka{
    private int CardId;

    public int getCardId() {
        return CardId;
    }

    public void setCardId(int cardId) {
        CardId = cardId;
    }
}
class GetBalance{
    double ye;
    String a,b,c;
    double je;

    public void setYe(double ye) {
        this.ye = ye;
    }

    public double getYe() {
        return ye;
    }
}
class WithDraw {
    String cardNo;//卡号
    String cardPassward;//密码
    String atmId;//atm机号
    double je;//操作金额
    double ye;
    double ye1;
    double ye2;
    double ye3;
    WithDraw(String a, String b, String c, double d) {
        this.cardNo = a;
        this.cardPassward = b;
        this.atmId = c;
        this.je = d;
    }

    void withdraw() {
        String[] shuju = new String[]{"6217000010041315709", "6217000010041315715", "6217000010041315718", "6217000010051320007", "6222081502001312389", "6222081502001312390", "6222081502001312399", "6222081502001312400", "6222081502051320785", "6222081502051320786"};
        ValidateDate A = new ValidateDate(cardNo, atmId);
        GetBalance B = new GetBalance();
        Zhanghu Z = new Zhanghu(cardNo);

        if (Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])) {
            ye = Z.getYe();
        }
        if (Z.getZhanghu().equals(shuju[3])) {
            ye1 = Z.getYe1();
        }
        if (Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6])|| Z.getZhanghu().equals(shuju[7])) {
            ye2 = Z.getYe2();
        }
        if (Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9])) {
            ye3 = Z.getYe3();
        }
        User C = new User(cardNo);
        if (A.pdkh() == 1) {
            //System.out.println(A.pdkh());
            if (A.pdatmid() == 1) {
                if (A.pddy() == 1) {
                    if (cardPassward.equals("88888888")) {
                        if (10000 - je < 0) {
                            System.out.println("Sorry,your account balance is insufficient.");
                        } else {
                            if (je < 0) {
                                if (Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])) {
                                        System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));
                                    System.out.printf("当前余额为¥%.2f\n", (Z.getYe() - je));
                                    Z.setYe(Z.getYe() - je);
                                    }
                                    if (Z.getZhanghu().equals(shuju[3])) {
                                        System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));
                                        System.out.printf("当前余额为¥%.2f\n", (Z.getYe1() - je));
                                        Z.setYe1(Z.getYe1() - je);
                                    }
                                if (Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6])|| Z.getZhanghu().equals(shuju[7])) {
                                    System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));
                                    System.out.printf("当前余额为¥%.2f\n", (Z.getYe2() - je));
                                    Z.setYe2(Z.getYe2() - je);
                                }
                                if (Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9])) {
                                    System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));
                                    System.out.printf("当前余额为¥%.2f\n", (Z.getYe3() - je));
                                    Z.setYe3(Z.getYe3() - je);
                                }
                            }else {
                                    if (Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])) {
                                            System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                                            System.out.printf("当前余额为¥%.2f\n", (Z.getYe() - je));
                                            Z.setYe(Z.getYe() - je);
                                        }
                                        if (Z.getZhanghu().equals(shuju[3])) {
                                            System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                                            System.out.printf("当前余额为¥%.2f\n", (Z.getYe1() - je));
                                            Z.setYe1(Z.getYe1() - je);
                                        }
                                        if (Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6])|| Z.getZhanghu().equals(shuju[7])) {
                                            System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                                            System.out.printf("当前余额为¥%.2f\n", (Z.getYe2() - je));
                                            Z.setYe2(Z.getYe2() - je);
                                        }
                                        if (Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9])) {
                                            System.out.println(C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                                            System.out.printf("当前余额为¥%.2f\n", (Z.getYe3() - je));
                                            Z.setYe3(Z.getYe3() - je);
                                        }
                                    }

                                }
                    }else {
                        System.out.println("Sorry,your password is wrong.");
                    }
                }
            }
        }
    }
}
class ValidateDate{
    String a;
    String b;
    ValidateDate(String a,String b){
        this.a=a;
        this.b=b;
    }
    int flag=0;
    String []shuju=new String[]{"6217000010041315709","6217000010041315715","6217000010041315718","6217000010051320007","6222081502001312389","6222081502001312390","6222081502001312399","6222081502001312400","6222081502051320785","6222081502051320786"};
    public int pdkh(){
        for(int i=0;i<shuju.length;i++){
            if(shuju[i].equals(a)){
                flag=1;
                break;
            }
        }
        if(flag==1){
            return 1;
        }
        else{
            System.out.println("Sorry,this card does not exist.");
            return 0;
        }

    }
    String []shuju1=new String[]{"01","02","03","04","05","06"};
    public int pdatmid(){
        int flag=0;

        //System.out.println(b);
        for(int i=0;i<shuju1.length;i++){
            if(shuju1[i].equals(b)){
                flag=1;
                break;
            }
        }
        if(flag==1){
            return 1;
        }
        else {
            System.out.println("Sorry,the ATM's id is wrong.");
            return 0;
        }
    }
    public int pddy(){
        int flag=0;
        int flag2=0;
        for(int j=0;j<4;j++) {
            if(a.equals(shuju[0])||a.equals(shuju[1])||a.equals(shuju[2])||a.equals(shuju[3])){
                if(b.equals("01")||b.equals("02")||b.equals("03")||b.equals("04")){
                    flag=1;
                }
            }
        }
        for(int i=4;i<shuju.length;i++){
            if(a.equals(shuju[4])||a.equals(shuju[5])||a.equals(shuju[6])||a.equals(shuju[7])||a.equals(shuju[8])||a.equals(shuju[9])){
                if(b.equals("05")||b.equals("06")){
                    flag2=1;
                }
            }
        }
        if(flag==1||flag2==1){
            return 1;
        }
        else{
            System.out.println("Sorry,cross-bank withdrawal is not supported.");
            return 0;
        }
    }
}

 

import java.awt.*;
import java.lang.reflect.Array;
import java.util.Scanner;
import java.time.LocalDateTime;
import java.util.regex.*;
import java.text.DecimalFormat;
public class Main1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        String str = input.nextLine();
        boolean isMatch = Pattern.matches("#", str);
        while (isMatch == false) {
            sb.append(str);
            sb.append("\n");
            str = input.nextLine();
            isMatch = Pattern.matches("#", str);
        }
        String shuju = String.valueOf(sb);
        String[] cunshuju1 = shuju.split("\n");
        int i = 0, j = 0, k = 0, cwsm = 0, temp = 0;
        GetBalance G=new GetBalance();

        for (i = 0; i < cunshuju1.length; i++) {
            String cunshuju2 = String.valueOf(cunshuju1[i]);
            String[] cunshuju3 = cunshuju2.split("\\s+");
            Zhanghu Z=new Zhanghu(cunshuju3[0]);
            if (cunshuju3.length != 1) {
                for (j = 0; j < cunshuju3.length; j++) {
                    ValidateDate V = new ValidateDate(cunshuju3[0], cunshuju3[2]);
                    if (V.pdkh()==1 ) {
                        WithDraw A = new WithDraw(cunshuju3[0], cunshuju3[1], cunshuju3[2], Double.parseDouble(cunshuju3[3]));
                        A.withdraw();
                        break;
                    }
                    else {
                        break;
                    }
                }
            }
            else {
                String []shuju1=new String[]{"6217000010041315709","6217000010041315715","6217000010041315718","6217000010051320007","6222081502001312389","6222081502001312390","6222081502001312399","6222081502001312400","6222081502051320785","6222081502051320786","6640000010045442002","6640000010045442003","6640000010045441009","6630000010033431001","6630000010033431008"};
                if (Z.getZhanghu().equals(shuju1[0]) || Z.getZhanghu().equals(shuju1[1]) || Z.getZhanghu().equals(shuju1[2])) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe() ));
                }
                if (Z.getZhanghu().equals(shuju1[3])) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe1() ));
                }
                if (Z.getZhanghu().equals(shuju1[4]) || Z.getZhanghu().equals(shuju1[5]) || Z.getZhanghu().equals(shuju1[6])|| Z.getZhanghu().equals(shuju1[7])) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe2() ));;
                }
                if (Z.getZhanghu().equals(shuju1[8]) || Z.getZhanghu().equals(shuju1[9])) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe3() ));
                }
                if (Z.getZhanghu().equals(shuju1[10]) || Z.getZhanghu().equals(shuju1[11])) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe4() ));
                }
                if (Z.getZhanghu().equals(shuju1[12]) ) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe5() ));
                }
                if (Z.getZhanghu().equals(shuju1[13]) ) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe6() ));
                }
                if (Z.getZhanghu().equals(shuju1[14]) ) {
                    System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe7() ));
                }
            }
        }
    }
}
class yinglian{
    private Jianshe jianshe;
    private Gongshang gongshang;
    yinglian(Jianshe jianshe,Gongshang gongshang){
        this.jianshe=jianshe;
        this.gongshang=gongshang;
    }
    public void setJianshe(Jianshe jianshe) {
        this.jianshe = jianshe;
    }

    public Jianshe getJianshe() {
        return jianshe;
    }

    public void setGongshang(Gongshang gongshang) {
        this.gongshang = gongshang;
    }

    public Gongshang getGongshang() {
        return gongshang;
    }
}
class Jianshe{
    private ATM atm;
    private User user;
    public ATM getAtm() { return atm; }
    public void setAtm(ATM atm) { this.atm = atm; }
    public User getUser() { return user; }
    public void setUser(User user) { this.user = user; }
}
class Gongshang{
    private ATM atm;
    private User user;
    public ATM getAtm() { return atm; }
    public void setAtm(ATM atm) { this.atm = atm; }
    public User getUser() { return user;
    }
    public void setUser(User user) { this.user = user; }
}
class ATM{

}
class User{
    String a,b;
    User(){ }
    User(String a,String b){ this.a=a;this.b=b; }
    private Zhanghu zhanghu;
    String name;
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public Zhanghu getZhanghu() { return zhanghu; }
    public void setZhanghu(Zhanghu zhanghu) {
        this.zhanghu = zhanghu;
    }
    String []shuju=new String[]{"6217000010041315709","6217000010041315715","6217000010041315718","6217000010051320007","6222081502001312389","6222081502001312390","6222081502001312399","6222081502001312400","6222081502051320785","6222081502051320786","6640000010045442002","6640000010045442003","6640000010045441009","6630000010033431001","6630000010033431008"};
    String []shuju1=new String[]{"01","02","03","04","05","06","07","08","09","10","11"};
    String Getname(){
        if(shuju[0].equals(a)||shuju[1].equals(a)||shuju[2].equals(a)){ return "杨过"; }
        if(shuju[3].equals(a)){ return ("郭靖"); }
        if(shuju[4].equals(a)||shuju[5].equals(a)||shuju[6].equals(a)||shuju[7].equals(a)){ return ("张无忌"); }
        if(shuju[8].equals(a)||shuju[9].equals(a)){ return ("韦小宝"); }
        if(shuju[10].equals(a)||shuju[11].equals(a)){ return ("张三丰"); }
        if(shuju[12].equals(a)){ return ("令狐冲"); }
        if(shuju[13].equals(a)){ return ("乔峰"); }
        if(shuju[14].equals(a)){ return ("洪七公"); }
        else return "0";
    }
    String Getyhname(){
        if(shuju1[0].equals(b)||shuju1[1].equals(b)||shuju1[2].equals(b)||shuju1[3].equals(b)){ return "中国建设银行"; }
        if(shuju1[4].equals(b)||shuju1[5].equals(b)){ return ("中国工商银行"); }
        if(shuju1[6].equals(b)||shuju1[7].equals(b)||shuju1[8].equals(b)||shuju1[9].equals(b)||shuju1[10].equals(b)){ return ("中国农业银行"); }
        else return "0";
    }
}
class Zhanghu{
    private String zhanghu;
    Zhanghu(String A){ this.zhanghu=A; }
    static private double ye=10000;
    static private double ye1=10000;
    static private double ye2=10000;
    static private double ye3=10000;
    static private double ye4=10000;
    static private double ye5=10000;
    static private double ye6=10000;
    static private double ye7=10000;
    public void setZhanghu(String zhanghu) { this.zhanghu = zhanghu; }
    public String getZhanghu() { return zhanghu; }
    private Yinghangka yinghangka;
    public void setYe(double ye) { this.ye = ye; }
    public double getYe() { return ye; }
    public double getYe1() { return ye1; }
    public void setYe1(double ye1) { this.ye1 = ye1; }
    public double getYe2() { return ye2; }
    public void setYe2(double ye2) { this.ye2 = ye2; }
    public double getYe3() { return ye3; }
    public void setYe3(double ye3) { this.ye3 = ye3; }
    public double getYe4() { return ye4; }
    public void setYe4(double ye4) { this.ye4 = ye4; }
    public  double getYe5() { return ye5; }
    public  void setYe5(double ye5) { this.ye5 = ye5; }
    public  double getYe6() { return ye6; }
    public  void setYe6(double ye6) { this.ye6 = ye6; }
    public  void setYe7(double ye7) { this.ye7 = ye7; }
    public  double getYe7() { return ye7; }
    public void setYinghangka(Yinghangka yinghangka) { this.yinghangka = yinghangka; }
    public Yinghangka getYinghangka() { return yinghangka; }
    public double jslx(String a,String b,double je){//此函数为计算利息
        ValidateDate V=new ValidateDate(b,a);
        if(a.equals("01")||a.equals("02")||a.equals("03")||a.equals("04")){
            if(V.pdatmid()==1) return 0;
            else return je*0.02; }
        if(a.equals("05")||a.equals("06")){
            if(V.pdatmid()==1) return 0;
            else return je*0.03; }
        if(a.equals("07")||a.equals("08")||a.equals("09")||a.equals("10")||a.equals("11")){
            if(V.pdatmid()==1) return 0;
            else return je*0.04; }
        else { return 0; }
    }
}
class Yinghangka{

}
class GetBalance{ double ye;String a,b,c;double je;
    public void setYe(double ye) { this.ye = ye; }
    public double getYe() { return ye; }
}
class WithDraw {
    String cardNo, cardPassward, atmId;//卡号//密码//atm机号
    double je, ye, ye1, ye2, ye3, ye4, ye5, ye6, ye7;//操作金额
    WithDraw(String a, String b, String c, double d) { this.cardNo = a;this.cardPassward = b;this.atmId = c;this.je = d;
    }

    void withdraw() {
        String []shuju1=new String[]{"01","02","03","04","05","06","07","08","09","10","11"};
        String[] shuju = new String[]{"6217000010041315709", "6217000010041315715", "6217000010041315718", "6217000010051320007", "6222081502001312389", "6222081502001312390", "6222081502001312399", "6222081502001312400", "6222081502051320785", "6222081502051320786", "6640000010045442002", "6640000010045442003", "6640000010045441009", "6630000010033431001", "6630000010033431008"};
        ValidateDate A = new ValidateDate(cardNo, atmId);
        GetBalance B = new GetBalance();
        Zhanghu Z = new Zhanghu(cardNo);
        if (Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])) { ye = Z.getYe(); }
        if (Z.getZhanghu().equals(shuju[3])) { ye1 = Z.getYe1(); }
        if (Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6]) || Z.getZhanghu().equals(shuju[7])) { ye2 = Z.getYe2(); }
        if (Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9])) { ye3 = Z.getYe3(); }
        if (Z.getZhanghu().equals(shuju[10]) || Z.getZhanghu().equals(shuju[11])) { ye4 = Z.getYe4(); }
        if (Z.getZhanghu().equals(shuju[12])) { ye5 = Z.getYe5(); }
        if (Z.getZhanghu().equals(shuju[13])) { ye6 = Z.getYe6(); }
        if (Z.getZhanghu().equals(shuju[14])) { ye7 = Z.getYe7(); }
        User C = new User(cardNo, atmId);
        if (A.pdkh() == 1) {
            if (atmId.equals(shuju1[0]) || atmId.equals(shuju1[1]) || atmId.equals(shuju1[2]) || atmId.equals(shuju1[3]) || atmId.equals(shuju1[4]) || atmId.equals(shuju1[5]) || atmId.equals(shuju1[6]) || atmId.equals(shuju1[7]) || atmId.equals(shuju1[8]) || atmId.equals(shuju1[9]) || atmId.equals(shuju1[10]) ) {
                if (cardPassward.equals("88888888")) {
                    if (je < 0) {
                        if (Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe() - je));Z.setYe(Z.getYe() - je);
                        }if (Z.getZhanghu().equals(shuju[3])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe1() - je));Z.setYe1(Z.getYe1() - je);
                        }if (Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6]) || Z.getZhanghu().equals(shuju[7])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe2() - je));Z.setYe2(Z.getYe2() - je);
                        }if (Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe3() - je));Z.setYe3(Z.getYe3() - je);
                        }if (Z.getZhanghu().equals(shuju[10]) || Z.getZhanghu().equals(shuju[11])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe4() - je));Z.setYe4(Z.getYe4() - je);
                        }if (Z.getZhanghu().equals(shuju[12])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe5() - je));Z.setYe5(Z.getYe5() - je);
                        }if (Z.getZhanghu().equals(shuju[13])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe6() - je));Z.setYe6(Z.getYe6() - je);}
                        if (Z.getZhanghu().equals(shuju[14])) { System.out.println("业务:存款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上存款¥" + String.format("%.2f", -je));System.out.printf("当前余额为¥%.2f\n", (Z.getYe7() - je));Z.setYe7(Z.getYe7() - je);}
                    } else {
                        if((Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])||Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6])||Z.getZhanghu().equals(shuju[7]) || Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9]))&&(Z.getYe()-je<=0||Z.getYe1()-je<=0||Z.getYe2()-je<=0||Z.getYe3()-je<=0)||((Z.getZhanghu().equals(shuju[10])||Z.getZhanghu().equals(shuju[11])||Z.getZhanghu().equals(shuju[12])||Z.getZhanghu().equals(shuju[13])||Z.getZhanghu().equals(shuju[14]))&&Z.getYe4()-je<=-50000||Z.getYe5()-je<=-50000||Z.getYe6()-je<=-50000||Z.getYe7()-je<=-50000)||Z.getYe4()<=-50000||Z.getYe5()<=-50000||Z.getYe6()<-50000||Z.getYe7()<=-50000){ System.out.println("Sorry,your account balance is insufficient.");return; }
                        if (Z.getZhanghu().equals(shuju[0]) || Z.getZhanghu().equals(shuju[1]) || Z.getZhanghu().equals(shuju[2])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe() - je - Z.jslx(atmId, cardNo, je)));Z.setYe(Z.getYe() - je);
                            } else { System.out.printf("当前余额为¥%.2f\n", (Z.getYe() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe()) * 0.05));Z.setYe(Z.getYe() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe()) * 0.05); } }
                        if (Z.getZhanghu().equals(shuju[3])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe1() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe1() - je - Z.jslx(atmId, cardNo, je)));Z.setYe1(Z.getYe1() - je - Z.jslx(atmId, cardNo, je));
                            } else if (Z.getYe1() - je < 0 && Z.getYe1() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe1() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe1(Z.getYe1() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe1()) * 0.05);
                            } else if (Z.getYe1() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe1() - je - (je * 0.05)));Z.setYe1(Z.getYe1() - je - (je * 0.05)); } }
                        if (Z.getZhanghu().equals(shuju[4]) || Z.getZhanghu().equals(shuju[5]) || Z.getZhanghu().equals(shuju[6]) || Z.getZhanghu().equals(shuju[7])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe2() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe2() - je - Z.jslx(atmId, cardNo, je)));Z.setYe2(Z.getYe2() - je - Z.jslx(atmId, cardNo, je));
                            } else if (Z.getYe2() - je < 0 && Z.getYe2() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe2() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe2(Z.getYe2() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe2()) * 0.05);
                            } else if (Z.getYe2() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe2() - je - (je * 0.05)));Z.setYe2(Z.getYe2() - je - (je * 0.05)); } }
                        if (Z.getZhanghu().equals(shuju[8]) || Z.getZhanghu().equals(shuju[9])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe3() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe3() - je - Z.jslx(atmId, cardNo, je)));Z.setYe3(Z.getYe3() - je - Z.jslx(atmId, cardNo, je));
                            } else if (Z.getYe3() - je < 0 && Z.getYe3() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe3() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe3(Z.getYe3() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe3()) * 0.05);
                            } else if (Z.getYe3() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe3() - je - (je * 0.05)));Z.setYe3(Z.getYe3() - je - (je * 0.05)); } }
                        if (Z.getZhanghu().equals(shuju[10]) || Z.getZhanghu().equals(shuju[11])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe4() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe4() - je - Z.jslx(atmId, cardNo, je)));Z.setYe4(Z.getYe4() - je - Z.jslx(atmId, cardNo, je));
                            } else if (Z.getYe4() - je < 0 && Z.getYe4() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe4() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe4(Z.getYe4() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05);
                            } else if (Z.getYe4() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe4() - je - (je * 0.05)));Z.setYe4(Z.getYe4() - je - (je * 0.05)); } }
                        if (Z.getZhanghu().equals(shuju[12])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe5() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe5() - je - Z.jslx(atmId, cardNo, je)));Z.setYe5(Z.getYe5() - je - Z.jslx(atmId, cardNo, je));
                            } else if (Z.getYe5() - je < 0 && Z.getYe5() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe5() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe5(Z.getYe5() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe5()) * 0.05);
                            } else if (Z.getYe5() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe5() - je - (je * 0.05)));Z.setYe5(Z.getYe5() - je - (je * 0.05)); } }
                        if (Z.getZhanghu().equals(shuju[13])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe6() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe6() - je - Z.jslx(atmId, cardNo, je)));Z.setYe6(Z.getYe6() - je - Z.jslx(atmId, cardNo, je));
                            } else if (Z.getYe6() - je < 0 && Z.getYe6() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe6() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe6(Z.getYe6() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe6()) * 0.05); }
                            else if (Z.getYe6() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe6() - je - (je * 0.05)));Z.setYe6(Z.getYe6() - je - (je * 0.05)); } }
                        if (Z.getZhanghu().equals(shuju[14])) { System.out.println("业务:取款 " + C.Getname() + "在" + C.Getyhname() + "的" + atmId + "号ATM机上取款¥" + String.format("%.2f", je));
                            if (Z.getYe7() - je >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe7() - je - Z.jslx(atmId, cardNo, je)));Z.setYe7(Z.getYe7() - je - Z.jslx(atmId, cardNo, je)); }
                            else if (Z.getYe7() - je < 0 && Z.getYe7() >= 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe7() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe4()) * 0.05));Z.setYe7(Z.getYe7() - je - Z.jslx(atmId, cardNo, je) - (je - Z.getYe7()) * 0.05); } else if (Z.getYe7() < 0) { System.out.printf("当前余额为¥%.2f\n", (Z.getYe7() - je - (je * 0.05)));Z.setYe7(Z.getYe7() - je - (je * 0.05));
                            } } } }else { System.out.println("Sorry,your password is wrong."); }  }else System.out.println("Sorry,the ATM's id is wrong."); } }
}
class ValidateDate{
    String a;String b;
    ValidateDate(String a,String b){ this.a=a;this.b=b; }
    int flag=0;String []shuju=new String[]{"6217000010041315709","6217000010041315715","6217000010041315718","6217000010051320007","6222081502001312389","6222081502001312390","6222081502001312399","6222081502001312400","6222081502051320785","6222081502051320786","6640000010045442002","6640000010045442003","6640000010045441009","6630000010033431001","6630000010033431008"};
    public int pdkh(){
        for(int i=0;i<shuju.length;i++){ if(shuju[i].equals(a)){ flag=1;break; } }
        if(flag==1){ return 1; } else{ System.out.println("Sorry,this card does not exist.");return 0; } }
    String []shuju1=new String[]{"01","02","03","04","05","06","07","08","09","10","11"};
    public int pdatmid(){
        int flag=0;
        if (a.equals(shuju[0]) || a.equals(shuju[1]) || a.equals(shuju[2])||a.equals(shuju[3])||a.equals(shuju[10]) || a.equals(shuju[11])) { if(b.equals("01")||b.equals("02")||b.equals("03")||b.equals("04")){ flag= 1; } }
        if (a.equals(shuju[4]) || a.equals(shuju[5]) || a.equals(shuju[6])||a.equals(shuju[7])||a.equals(shuju[12])||a.equals(shuju[8]) || a.equals(shuju[9])) { if(b.equals("05")||b.equals("06")){ flag= 1; } }
        if (a.equals(shuju[13])||a.equals(shuju[14]) ) { if(b.equals("07")||b.equals("08")||b.equals("09")||b.equals("10")||b.equals("11")){ flag= 1; } }
        if(flag==1){ return 1; }
        else { return 0; } }
}

踩坑心得:

在做题目集7的两道题时,总是出现错误,一般性的都是括号,空格和答案不一样,还有就是程序,程序报错主要原因也有,经常

忘记添加 } ,以及 ; 这两个符号,一不留神就出错,然后检查半天才发现,还有就是,在命名数组的时候,因为喜欢用shuzu1,或

者shuzu2之类的命名方式,导致出现数组越界的报错,这种情况在实际代码修改中,又不好处理,经常不知道是哪个数组出现问题

还有就是,数据初始化的情况,一个数据不初始化,就报错,报的错还看不懂。一般需要在相关网上查询才知道错误原因。在用字

符串匹配的时候,经常使用的

a.equals(shuju[3])

这种形式,你会发现,有时候这种形式并没有用。还有就是,这个字符串类型之间的转换,常用的

String.valueOf(sb);

这也会经常性的因为不熟悉而报错。在初始化数组时,数组的大小总是一个很难受的问题,因为你一不小心吧,就出现了错误,这

个错误告诉你,你的数组大小不合适。还有一个小问题就是,如何输出字符串后两位小数,这里用printf来打印的话,往往有点麻烦

之前也都是用这种方法,最近才发现另一种更好的方法:

System.out.println(String.format("业务:查询余额 "+"¥%.2f",Z.getYe5() ));

改进建议:

对于以上问题,猜的坑,我给我出的建议有:

针对老是遗忘符号的问题,我们可以在平时敲代码练习的过程中,尽量放慢速度,做到适当的快,然后主要追求的就是要准确,不要

代码写完了,老长一篇,然后点个运行,你发现全部都是红色。

在数组命名方面呢,我们应该做到让每个不是敲代码的人都能看的懂,你这代码,数组里存的是个什么东西,比如,银行卡号的数组

你就可以用yhkh也就是银行卡号这四个字的缩写来代表。至于初始化内存的事,我建议有条件的情况下,可以尽量的去放大这个范围

毕竟我们现在还不需要去考虑这么多的事情,可以去舍空间去让代码通过。

其他方面是知识点不足引起的问题,这个就需要平时多去看看代码,多去别的大神哪里去取取经。

总结:

通过这三次练习,我明白了如何去更好的排序算法的运用。在图形类的设计中,体会到了面向对象设计原则中的“开-闭”原则的实现方法及

其作用。改善代码能使得系统具有较好的可复用性。 进一步深入理解面向对象设计原则中的“单一职责”原则和“开-闭”原则。

在 ArrayList 工具类的使用,进一步掌握接口在面向对象程序设计中的作用。、

明白了各实体类之间的关系,尤其是一对多的组合关系,对实体类的设计要做到单一职责原则,且不能缺少规定的实体类。以及在“合成

复用原则”及“单一职责原则”基础上,尽量对上次作业的程 序进行重构,使之符合 “开-闭”原则。

知道了编程时考虑面向对象中的封装性本题目中的应用以及是否有能够扩展 的衍生需求。

在基础知识的学习上还有进一步的去学习,去巩固一些基本的常识。

对教师、课程、作业、实验、课上及课下组织方式等方面的改进建议及意见的话,老师在课堂上是有和同学们互动,比如让大家自己动手

实现以下某个功能。如果能够在这之后,重点讲一下,这个代码的重要部分,详细理一下同学们写的代码,以及指出代码的可以改进的地

方。实验的话,如果老师能够在实验开始的一两天内,将本次实验的答题思路给我们理一遍,带着我们分析一下,本次实验的需求,以及

要注意的地方,如此我感觉同学们应该回更积极的去完成这个实验。 

本次博客内容到此结束。

 

 

 

posted @ 2021-06-16 00:20  sinner、  阅读(151)  评论(0)    收藏  举报