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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 112345666 于 2016-9-29 19:15 编辑

那道题很不错的,考的很全面,全是JAVA面向对象的东西,我今天才搞懂
2.        创建抽象类Payment,定义返回类型为double的抽象方法pay(double money)(10分)
a.        创建两个子类Zfb, Cash;均继承自Payment,重写pay方法,根据以下要求返回实际付款金额
①        支付宝支付(Zfb):随机打5-8折
②        现金支付(Cash):没有任何优惠
b.        定义Person类,定义静态方法buy,参数为String类型,返回值为Payment类型,方法中对参数进行判断,如果参数为"Zfb",则返回Zfb类对象, 如果参数为"Cash",则返回Cash类对象,如果参数为其他值,则默认返回Cash类对象.
c.        定义测试类,在main方法中,调用Person类的静态方法buy,提示用户输入付款方式,以及金额;输出最后付款钱数
代码明天发,今天先睡觉

34 个回复

正序浏览
Random r = new Random();                 double money2 = (r.nextInt(4)+5)*0.1*money;                 return money2;这是什么意思??可不可以用math,random
回复 使用道具 举报
楼主注释一下就好了
回复 使用道具 举报
我今天考了,感觉不是很难
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
此间的少年 发表于 2016-9-29 23:27
基础班即将毕业,现在回头看这种题,好简单啊

简单吗?我怎么一直觉得很有价值啊,很综合的题啊
回复 使用道具 举报
还不是特别懂这道题,好久没敲点招题的代码了,都生疏了
回复 使用道具 举报
这个考试时间是多久啊,感觉想了很久啊,因为不是熟练
回复 使用道具 举报
package com.zfb.test;

import java.util.Scanner;

import com.zfb.pay.*;
import com.zfb.person.*;

public class Test {

        public static void main(String[] args) {
                Person p = new Person();
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入付款金额:");
                double money = 0;
                if(sc.hasNextDouble()||sc.hasNextInt()){
                        money = sc.nextDouble();
                }
                System.out.println("请选择付款方式:");
                System.out.println("        1:支付宝\n        2:现金\n        任意数字:其它付款方式");
                int select = 2;
                if(sc.hasNextInt()){
                        select = sc.nextInt();
                }
               
                switch(select){
                        case 1:
                                System.out.println("你最终需付款的金额为:"+p.buy("Zfb").pay(money));
                        break;
                        default:
                        case 2:
                                System.out.println("你最终需付款的金额为:"+p.buy("Cash").pay(money));
                        break;
                       
                }
        }
}
package com.zfb.pay;

public abstract class Payment {
        public abstract double pay(double money);
}
package com.zfb.pay;
import java.util.Random;

public class Zfb extends Payment {
        public double pay(double money) {
                Random r = new Random();
                double m =r.nextInt(3)+5;
                return money*(m/10);
        }
}
package com.zfb.pay;

public class Cash extends Payment {

        @Override
        public double pay(double money) {

                return money;
        }

}

package com.zfb.person;

import com.zfb.pay.*;

public class Person {
        public static Payment buy(String pay){
                if("Zfb".equals(pay)){       
                        return new Zfb();
                }else if("Cash".equals(pay)){
                        return new Cash();
                }
                return new Cash();
        }
}
回复 使用道具 举报
说错了,是一道题平均20分钟,
这是我的答案:
package com.heima.homework;

import java.util.Random;
import java.util.Scanner;

public class Example {
        public static void main(String[] args) {
                System.out.println("请用户输入付款方式:");
                Scanner sc = new Scanner(System.in);
                String name = sc.nextLine();
                System.out.println("请用户输入付款金额:");
                double money = sc.nextDouble();
                System.out.println(Person.buy(name).pay(money));
        }
}

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

class Zfb extends Payment {
        Random r = new Random();

        public double pay(double money) {
                return money - money * (r.nextInt(4) + 5) * 0.1;
        }
}

class Cash extends Payment {

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

}

class Person {
        public static Payment buy(String name) {
                if ("Zfb".equals(name)) {
                        return new Zfb();
                } else if ("Cash".equals(name)) {
                        return new Cash();
                } else {
                        return new Cash();
                }
        }
}
回复 使用道具 举报
考试只有20分钟啊,这题题目都没有需要健壮性,只要能实现功能就好了,主方法要是像你这样完善题目的话,绝对不止20分钟把,其实这题不难啦
回复 使用道具 举报
好全面,考察了面向对象的几乎所有的知识点
回复 使用道具 举报
回复 使用道具 举报
学习学习!
回复 使用道具 举报
真的假的?这是点招题?那到时候估计时间会不够了
回复 使用道具 举报
这道题我觉得白看不厌啊,出的挺好的一道题,考的很全面
回复 使用道具 举报
赞!!!!!!!!!!
回复 使用道具 举报
基础班即将毕业,现在回头看这种题,好简单啊
回复 使用道具 举报
坐等....
回复 使用道具 举报
都是大神,太厉害了
回复 使用道具 举报
..................
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马