其他分享
首页 > 其他分享> > 题目集7-9总结性blog

题目集7-9总结性blog

作者:互联网

题目集7-9总结性blog

1、 前言

   这三次作业并没有什么新的知识点,都是对之前学习的东西进行应用,主要有:1、继承、多态的应用;2、ArrayList泛型的应用方法;3、Comparable接口及泛型的应用;4、单一职责原则的应用;          5、“开-闭”原则的应用。还有一些银行、ATM机、银行卡的相关课外知识,我是我之前没了解过的。

   题量也是比较少,三次作业只有四道题,当然难度也是有的,像设计第八次作业的类,

要使得程序的可维护性高,这样第九次作业才好写,这得花点功夫。

2、 设计与分析

  (1) 题目集7(7-1)、(7-2)两道题目的递进式设计分析总结

     题目7(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图形名称2:面积值2 …图形名称n:面积值n ,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;

        排序后的各图形类型及面积,格式同排序前的输出;

        所有图形的面积总和,格式为Sum of area:总面积值。

      类图:

        

 

 

 

 

                复杂度:

               

                源代码:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.text.DecimalFormat;
import java.util.TreeMap;
public class Main {
    public static void main(String[] args) {    
        Scanner input=new Scanner(System.in);
        DecimalFormat df2 = new DecimalFormat("####0.00");
        ArrayList<Integer> cz = new ArrayList<Integer>();
        Circle circle=new Circle();
        Rectangle rectangle=new Rectangle();
        Triangle triangle=new Triangle();
        Trapezoid trapezoid=new Trapezoid();
        for(int i=0;;i++) {
            int x=input.nextInt();
            if(x==0&&i==0) {
                System.out.println("The original list:"+"\n");
                System.out.println("The sorted list:"+"\n");
                System.out.println("Sum of area:0.00");
                System.exit(0);
                break;
            }
            if(x==0&&i!=0)
                break;
            else if(x>0&&x<=4)
                cz.add(x);
            else {
                System.out.println("Wrong Format");
                System.exit(0);
            }                
        }
        ArrayList<Double> area1 = new ArrayList<Double>();
        ArrayList<Double> area2 = new ArrayList<Double>();
        ArrayList<Double> area3 = new ArrayList<Double>();
        ArrayList<Double> area4 = new ArrayList<Double>();
        for(int i=0;i<cz.size();i++) {
            switch(cz.get(i)) {
            case 1:circle.r=input.nextDouble();
                    if(circle.r<0) {
                        System.out.println("Wrong Format");
                        System.exit(0);
                    }
                    area1.add(circle.getArea());
                    break;
            case 2:rectangle.length=input.nextDouble();
                    rectangle.width=input.nextDouble();
                    if(rectangle.length<0||rectangle.width<0) {
                        System.out.println("Wrong Format");
                        System.exit(0);
                    }
                    area2.add(rectangle.getArea());
                    break;
            case 3:triangle.side1=input.nextDouble();
                    triangle.side2=input.nextDouble();
                    triangle.side3=input.nextDouble();
                    if(triangle.side1+triangle.side2<=triangle.side3||triangle.side1+triangle.side3<=triangle.side2||triangle.side2+triangle.side3<=triangle.side1) {
                        System.out.println("Wrong Format");
                        System.exit(0);
                    }
                    area3.add(triangle.getArea());
                    break;
            case 4:trapezoid.sd=input.nextDouble();
                    trapezoid.xd=input.nextDouble();
                    trapezoid.h=input.nextDouble();
                    if(trapezoid.sd<0||trapezoid.xd<0||trapezoid.h<0) {
                        System.out.println("Wrong Format");
                        System.exit(0);
                    }
                    area4.add(trapezoid.getArea());
                    break;
            }
        }
        System.out.println("The original list:");
        for(int i = 0,j = 0,k = 0,l=0;i+k+j+l<cz.size();) {
            switch(cz.get(i+j+k+l)) {
            case 1:System.out.print("Circle:"+df2.format(area1.get(i))+" ");i++;break;
            case 2:System.out.print("Rectangle:"+df2.format(area2.get(j))+" ");j++;break;
            case 3:System.out.print("Triangle:"+df2.format(area3.get(k))+" ");k++;break;
            case 4:System.out.print("Trapezoid:"+df2.format(area4.get(l))+" ");l++;break;
            }
        }
        System.out.println("\n"+"The sorted list:");
        Map map = new TreeMap();
        for(int i = 0,j = 0,k = 0,l=0;i+k+j+l<cz.size();) {
            switch(cz.get(i+j+k+l)) {
            case 1:map.put(area1.get(i),"Circle:");i++;break;
            case 2:map.put(area2.get(j),"Rectangle:");j++;break;
            case 3:map.put(area3.get(k),"Triangle:");k++;break;
            case 4:map.put(area4.get(l),"Trapezoid:");l++;break;
            }
        }
        ArrayList<Double> mj = new ArrayList<Double>();
        for(int i = 0,j = 0,k = 0,l=0;i+j+k+l<cz.size();) {
            switch(cz.get(i+j+k+l)) {
            case 1:mj.add(area1.get(i));i++;break;
            case 2:mj.add(area2.get(j));j++;break;
            case 3:mj.add(area3.get(k));k++;break;
            case 4:mj.add(area4.get(l));l++;break;
            }
        }
        Collections.sort(mj);
        for(int i=cz.size()-1;i>=0;i--) {
            System.out.print(map.get(mj.get(i)));
            System.out.print(df2.format(mj.get(i))+" ");
        }
        double sum=0;
        for(int i=0;i<cz.size();i++) {
            sum=sum+mj.get(i);        
        }
        System.out.println("\n"+"Sum of area:"+df2.format(sum));
    }
}
class Circle{
    DecimalFormat df2 = new DecimalFormat("####0.00");
    double r;
    public double getArea() {
        return Math.PI*r*r;
    }
    public void show() {
        System.out.print("Circle:"+df2.format(this.getArea())+" ");
    }
}
class Rectangle{
    DecimalFormat df2 = new DecimalFormat("####0.00");
    double length;
    double width;
    public double getArea() {
        return length*width;
    }
    public void show() {
        System.out.print("Rectangle:"+df2.format(this.getArea())+" ");
    }
}
class Triangle{
    DecimalFormat df2 = new DecimalFormat("####0.00");
    double side1;
    double side2;
    double side3;
    public double getArea() {
        return Math.sqrt(((side1+side2+side3)/2)*(((side1+side2+side3)/2)-side1)*(((side1+side2+side3)/2)-side2)*(((side1+side2+side3)/2)-side3));
    }
    public void show() {
        System.out.print("Triangle:"+df2.format(this.getArea())+" ");
    }
}
class Trapezoid{
    DecimalFormat df2 = new DecimalFormat("####0.00");
    double sd;
    double xd;
    double h;
    public double getArea() {
        return (sd+xd)*h*0.5;
    }
    public void show() {
        System.out.print("Trapezoid:"+df2.format(this.getArea())+" ");
    }
}

 

             

                 题目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:面积值。

                     类图:

                        

                     复杂度:

                   

      第一题是输入几个不同的图形,然后算出其面积,先输出按输入顺序的面积,再输出按面积从大到小的顺序,最后输出面积最大的;而第二题是在第一题的基础上,可以输入多个相同的图形,但是                 可以有不同的面积,而且要把不同的图形分为不同的组,组的顺序是固定的,但是组内图形面积需要排序,最后输出最大的一组面积之和。

      由于第二题是在第一题的基础上进行的,所以第一题的四个图形类和存面积的方法可以完全用在第二题中,第二题比第一题多的用来分组代码:

      

System.out.print("[");

              for(int i=area1.size()-1;i>=0;i--) {

                            System.out.print("Circle:"+df2.format(area1.get(i))+" ");

              }

              System.out.print("]");

              System.out.print("[");

              for(int i=area2.size()-1;i>=0;i--) {

                            System.out.print("Rectangle:"+df2.format(area2.get(i))+" ");

              }

              System.out.print("]");

              System.out.print("[");

              for(int i=area3.size()-1;i>=0;i--) {

                            System.out.print("Triangle:"+df2.format(area3.get(i))+" ");

              }

              System.out.print("]");

              System.out.print("[");

              for(int i=area4.size()-1;i>=0;i--) {

                            System.out.print("Trapezoid:"+df2.format(area4.get(i))+" ");

              }

              System.out.print("]");

 

       (2)题目集8和题目集9两道ATM机仿真题目的设计思路分析总结

               题目8详情:

                                   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编号]上存款¥[金额]

        当前余额为¥[金额]

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

      ④   查询余额业务输出

        ¥[金额]   

        金额保留两位小数。

      类图:

       

 

 

              题目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编号]上取款¥[金额]

        当前余额为¥[金额]

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

      ③查询余额业务输出

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

        金额保留两位小数。

     类图:

     

 

 

  这两次作业的关键点是题目八,因为题目九是在第八题的基础上做的,那就先看题目八,第一步要做的是存数据,因为这里有大量的衍生关系,比如中国银联有中国建设银行,中国工商银行等,然后每个银行又有一些用户,每个用户有一个或多个银行账号,每个银行账号又有一个或多个银行卡号。要做好这个题目,如何把这些关系有机联系起来是至关重要的。

  我用的是map集合将这些关系联系起来,这样就可以通过任何对象找到与其相关的信息,然后相关的输出方法是放在ATM类里面,判断是否合法操作的方法在Bankcard类里面。

  源代码:

  

import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import java.text.DecimalFormat;
public class Main{
    Scanner input=new Scanner(System.in);
    public static void main(String[] args) {
        UnionPay unionpay=new UnionPay();
        Bank bank=new Bank();
        User user=new User();
        Account account=new Account();
        Bankcard bankcard=new Bankcard();
        ATM atm=new ATM();
        Scanner input=new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        String b=input.nextLine();
        while(!b.equals("#")) {
            sb.append(b).append("\n");
            b=input.nextLine();
        }
        String ss= String.valueOf(sb);
        String rows[]=ss.split("\n");
        for(int i=0;i<rows.length;i++) {
            String dan[]=rows[i].split(" ");
            bankcard.put(i,rows);
            bankcard.check(user,dan.length);
            if(bankcard.flag!=0)
                System.exit(0);
            else {
                if(dan.length!=1)
                    atm.showcz(bankcard,bank);
                else
                    atm.showmoney(bankcard);
            }
        }
    }
}
class UnionPay{
    Map<String, String> yl = new HashMap<String, String>();{
    this.yl.put("中国工商银行","银联");
    this.yl.put("中国建设银行","银联");
    this.yl.put("中国农业银行","银联");
    }
}
class Bank extends UnionPay{
    Map<String, String> jsyh = new HashMap<String, String>();{
    this.jsyh.put("杨过","中国建设银行");
    this.jsyh.put("郭靖","中国建设银行");
    this.jsyh.put("张三丰","中国建设银行");
    this.jsyh.put("张无忌","中国工商银行");
    this.jsyh.put("韦小宝","中国工商银行");
    this.jsyh.put("令狐冲","中国工商银行");
    this.jsyh.put("乔峰","中国农业银行");
    this.jsyh.put("洪七公","中国农业银行");
    }
    Map<String, String> kind = new HashMap<String, String>();{
        this.kind.put("6217000010041315709","借记账号");
        this.kind.put("6217000010041315715","借记账号");
        this.kind.put("6217000010041315718","借记账号");
        this.kind.put("6217000010051320007","借记账号");
        this.kind.put("6222081502001312389","借记账号");
        this.kind.put("6222081502001312390","借记账号");
        this.kind.put("6222081502001312399","借记账号");
        this.kind.put("6222081502001312400","借记账号");
        this.kind.put("6222081502051320785","借记账号");
        this.kind.put("6222081502051320786","借记账号");
        this.kind.put("6640000010045442002","贷记账号");
        this.kind.put("6640000010045442003","贷记账号");
        this.kind.put("6640000010045441009","贷记账号");
        this.kind.put("6630000010033431001","贷记账号");
        this.kind.put("6630000010033431008","贷记账号");
    }
    Map<String, String> sxf = new HashMap<String, String>();{
        this.sxf.put("中国建设银行","0.02");
        this.sxf.put("中国工商银行","0.03");
        this.sxf.put("中国农业银行","0.04");
    }
}
class User extends Bank{
    Map<String, String> yangguo = new HashMap<String, String>();{
        this.yangguo.put("6217000010041315709","杨过");
        this.yangguo.put("6217000010041315715","杨过");
        this.yangguo.put("6217000010041315718","杨过");
        this.yangguo.put("6217000010051320007","郭靖");
        this.yangguo.put("6222081502001312389","张无忌");
        this.yangguo.put("6222081502001312390","张无忌");
        this.yangguo.put("6222081502001312399","张无忌");
        this.yangguo.put("6222081502001312400","张无忌");
        this.yangguo.put("6222081502051320785","韦小宝");
        this.yangguo.put("6222081502051320786","韦小宝");
        this.yangguo.put("6640000010045442002","张三丰");
        this.yangguo.put("6640000010045442003","张三丰");
        this.yangguo.put("6640000010045441009","令狐冲");
        this.yangguo.put("6630000010033431001","乔峰");
        this.yangguo.put("6630000010033431008","洪七公");
    }
}
class ATM extends User{
    Map<String, String> giao = new HashMap<String, String>();{
        this.giao.put("01","中国建设银行");
        this.giao.put("02","中国建设银行");
        this.giao.put("03","中国建设银行");
        this.giao.put("04","中国建设银行");
        this.giao.put("05","中国工商银行");
        this.giao.put("06","中国工商银行");
        this.giao.put("07","中国农业银行");
        this.giao.put("08","中国农业银行");
        this.giao.put("09","中国农业银行");
        this.giao.put("10","中国农业银行");
        this.giao.put("11","中国农业银行");
    }
    DecimalFormat df2 = new DecimalFormat("####0.00");
    public void showcz(Bankcard bankcard,Bank bank) {
        if(bankcard.money>0) {
            System.out.println("业务:取款 "+super.yangguo.get(bankcard.card)+"在"+giao.get(bankcard.bh)+"的"+bankcard.bh+"号ATM机上取款¥"+df2.format(bankcard.money));
            System.out.println("当前余额为¥"+df2.format(bankcard.yue()));
        }
        else {
            System.out.println("业务:存款 "+super.yangguo.get(bankcard.card)+"在"+giao.get(bankcard.bh)+"的"+bankcard.bh+"号ATM机上存款¥"+df2.format(-bankcard.money));
            System.out.println("当前余额为¥"+df2.format(bankcard.yue()));
        }        
    }
    public void showmoney(Bankcard bankcard) {
        System.out.println("业务:查询余额 "+"¥"+df2.format(bankcard.yue()));
    }
}
class Account{
    
}
class Bankcard extends ATM{
    Map<String, String> qian = new HashMap<String, String>();{
        this.qian.put("杨过","1");
        this.qian.put("郭靖","2");
        this.qian.put("张无忌","3");
        this.qian.put("韦小宝","4");
        this.qian.put("张三丰","5");
        this.qian.put("令狐冲","6");
        this.qian.put("乔峰","7");
        this.qian.put("洪七公","8");
    }
    String card;
    String mima;
    String bh;
    double money;
    double[] startmoney={10000.00,10000.00,10000.00,10000.00,10000.00,10000.00,10000.00,10000.00};
    int flag=0;
    public void put(int i,String rows[]) {
        rows[i]=rows[i].replaceAll("\\s+", " ");
        String dan[]=rows[i].split(" ");
        int length=dan.length;
        if(length!=1) {
            card=dan[0];
            mima=dan[1];
            bh=dan[2];
            money=Double.parseDouble(dan[3]);
        }
        else {
            card=dan[0];
            mima="88888888";
            bh="01";
            money=0;
        }
    }
    public void check(User user,int length) {
            if(user.yangguo.get(card)==null) {
                System.out.println("Sorry,this card does not exist.");
                flag++;
            }
            else if(!mima.equals("88888888")) {
                System.out.println("Sorry,your password is wrong.");
                flag++;
            }
            else if(!bh.equals("11")&&!bh.equals("10")&&!bh.equals("09")&&!bh.equals("08")&&!bh.equals("07")&&!bh.equals("06")&&!bh.equals("05")&&!bh.equals("04")&&!bh.equals("03")&&!bh.equals("02")&&!bh.equals("01")) {
                System.out.println("Sorry,the ATM's id is wrong.");
                flag++;
            }
            else if((kind.get(card).equals("借记账号")&&money>startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1])||(kind.get(card).equals("借记账号")&&sfkh()&&money==startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1])||(yue1(startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1],money)<-50000)) {
                System.out.println("Sorry,your account balance is insufficient.");
                flag++;
            }
            else
                flag=0;            
    }
        public double yue() {
            if(startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]<money&&startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]>0) {
                startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]=startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]-(money-startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1])*0.05;
            }
            if(startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]<money&&startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]<=0) {
                startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]=startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]-money*0.05;
            }
            if(sfkh())
                startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]=startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]-money-money*Double.parseDouble(sxf.get(giao.get(bh)));
            else
                startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]=startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1]-money;
            return startmoney[Integer.valueOf(qian.get(yangguo.get(card)))-1];
        }
    public double yue1(double a,double money1) {
            if(a<money1&&a>0) {
                a=a-(money1-a)*0.05;
            }
            if(a<money1&&a<=0) {
                a=a-money1*0.05;
            }
            if(sfkh())
                a=a-money1-money1*Double.parseDouble(sxf.get(giao.get(bh)));
            else
                a=a-money1;
            return a;
        }
        public boolean sfkh() {
            if(jsyh.get(yangguo.get(card)).equals(giao.get(bh)))
                return false;
            else
                return true;
        }
}

 

3、 踩坑心得

  1、题目集7:for(int i = 0,j = 0,k = 0,l=0;i+k+j+l<cz.size();) {

                       switch(cz.get(i+j+k+l)) {

                       case 1:System.out.print("Circle:"+df2.format(area1.get(i))+" ");i++;break;

                       case 2:System.out.print("Rectangle:"+df2.format(area2.get(j))+" ");j++;break;

                       case 3:System.out.print("Triangle:"+df2.format(area3.get(k))+" ");k++;break;

                       case 4:System.out.print("Trapezoid:"+df2.format(area4.get(l))+" ");l++;break;

                       }

                }

              这样输出才是对的,但是我之前是这样写的:

                for(int i = 0,;i <cz.size();) {

                       switch(cz.get(i+j+k+l)) {

                       case 1:System.out.print("Circle:"+df2.format(area1.get(i))+" ");i++;break;

                       case 2:System.out.print("Rectangle:"+df2.format(area2.get(i))+" ");i++;break;

                       case 3:System.out.print("Triangle:"+df2.format(area3.get(i))+" ");i++;break;

                       case 4:System.out.print("Trapezoid:"+df2.format(area4.get(i))+" ");i++;break;

                       }

                }

              这就是犯了把四个数组看成一个数组的错误,这样就得不到正确答案。

 2、题目集8、9:余额没有用多个10000元,导致取钱全是取一张卡里面的钱

4、 改进建议

   题目集7:这题给的类图太详细了,就连主方法的模板都给出了,我觉得没必要这样,这样我感觉大部分人的代码都比较相似,学生会缺乏创新。

5、 总结

  这三次题目集虽然题量少,但是写起来也花了挺多时间,也学到了很多,现在我可以更好地运用正则表达式来分割数据,这是题目集8和9都要用到的;还学到了如何用map集合来处理数据;还有一些课外的,但是在现实生活中很常见的知识,比如ATM机;由于这几道题目都要设计类,于是我现在对类的理解进一步深刻了,这就是Java面向对象的魅力,将一个大问题逐步分割成互相关联的小问题。但是我对接口的运用还不是很好,还有我不知道接口的用处在哪;希望以后能有更多与现实生活相关的题目。

标签:总结性,题目,get,System,blog,yangguo,put,new,out
来源: https://www.cnblogs.com/0108061X/p/14897702.html