A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© UZI 中级黑马   /  2016-10-27 21:18  /  698 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.
                1) 定义一个抽象类Payment, 该类有一个抽象方法pay,接收double类型数据,返回值为double类型
                2) 定义两个类AliPay与Cash, 分别继承Payment, AliPay对接受金额随机打5到8折,Cash则需要全额支付
                3) 定义一个Person类,拥有静态方法buy,根据接收的String类型参数,判断支付方式.若输入AliPay,
                        则返回AliPay对象,输入Cash返回Cash对象,其他情况默认为Cash支付
                4) 在测试类中测试.
               
                以下为示例:
                        请您选择付款的方式以及金额
                        AliPay,35
                        欢迎使用支付宝付款
                        恭喜您打6折
                        最后付款金额:21.0

public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请您选择付款的方式以及方法,格式(xxx,xx)");
                String s = sc.nextLine();
                String[] arr = s.split(",");
                double d = Person.buy(arr[0]).pay(Integer.parseInt(arr[1]));
                System.out.println("最后付款金额: " + d);
        }

class Person{
       
        public static Payment buy(String s){
               
                if ("AliPay".equals(s)) {
                        return new AliPay();
                }else {
                        return new Cash();
                }
        }
}

abstract class Payment{
        public abstract double pay(double d);
}

class AliPay extends Payment{
        Random r = new Random();
        @Override
        public double pay(double d) {
                System.out.println("欢迎使用支付宝付款");
                double num = r.nextInt(4)+5;
                System.out.println("恭喜你打" + num + "折");
                return d * num / 10;
        }
       
}

class Cash extends Payment{

        @Override
        public double pay(double d) {
               
                return d;
        }
       
}

评分

参与人数 1黑马币 +5 收起 理由
胡根命 + 5 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马