Java 工银笔试题

alt

题目(以项目角度设计) 1、有一家超市,出售苹果和草莓。其中苹果 8 元/斤,草莓 13 元/斤。 现在顾客 A 在超市购买了若干斤苹果和草莓,需要计算一共多少钱? 请编写函数,对于 A 购买的水果斤数 (水果斤数为大于等于 0 的整数),计算并返回所购买商品的总价。

2、超市增加了一种水果芒果,其定价为 20 元/斤。 现在顾客 B 在超市购买了若干斤苹果、 草莓和芒果,需计算一共需要多少钱? 请编写函数,对于 B 购买的水果斤数 (水果斤数为大于等于 0 的整数),计算并返回所购买商品的总价。

3、超市做促销活动,草莓限时打 8 折。 现在顾客 C 在超市购买了若干斤苹果、 草莓和芒果,需计算一共需要多少钱? 请编写函数,对于 C 购买的水果斤数 (水果斤数为大于等于 0 的整数),计算并返回所购买商品的总价。

4、促销活动效果明显,超市继续加大促销力度,购物满 100 减 10 块。 现在顾客 D 在超市购买了若干斤苹果、 草莓和芒果,需计算一共需要多少钱? 请编写函数,对于 D 购买的水果斤数 (水果斤数为大于等于 0 的整数),计算并返回所购买商品的总价。

要求 使用 Java 程序编写,IDE 不限, 请使用面向对象的思路进行程序编写。 需在程序中,验证函数计算结果的正确性。

提示 顾客购买的水果斤数,可自行确定。无论数值为多少,均需验证程序计算结果的正确性。 可以编写多个函数分别实现,也可以只编写一个函数实现,方式不限。 面试时,请准备电脑及 IDE 环境进行现场演示。 若能将代码提交到 github、gitee、gitlab 等代码托管仓库,提供代码仓库地址更佳。

package com.javaTest;

import java.math.BigDecimal;

public class ICBCTest {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }

    public static BigDecimal getShoppingAmountTotalPrice(String fruitType,Integer shoppingFruitItemAmount,Boolean isDisCount,Integer disCountCode){
        if(fruitType==null){
            return null;
        }
        if (fruitType.isEmpty()){
            return null;
        }
        if (shoppingFruitItemAmount==null){
            return null;
        }
        if (shoppingFruitItemAmount<0){
            return null;
        }
        if (isDisCount==null){
            return null;
        }
        if (disCountCode==null){
            return null;
        }
        BigDecimal totalAmount=new BigDecimal("0.00");
        if (!isDisCount){
            if (fruitType.equals(FruitName.APPLE)){
                BigDecimal multiply = FruitPrice.APPLE_PRICE.getPrice().multiply(new BigDecimal(shoppingFruitItemAmount));
                totalAmount.add(multiply);
                return totalAmount;
            } else if (fruitType.equals(FruitName.GLASS_DETAIL_FRUIT)) {
                BigDecimal multiply = FruitPrice.GLASS_DETAIL_FRUIT_PRICE.getPrice().multiply(new BigDecimal(shoppingFruitItemAmount));
                totalAmount.add(multiply);
                return totalAmount;
            }else if (fruitType.equals(FruitName.MANGO)){
                BigDecimal multiply = FruitPrice.MANGO_PRICE.getPrice().multiply(new BigDecimal(shoppingFruitItemAmount));
                totalAmount.add(multiply);
                return totalAmount;
            }
        }else {
            if (fruitType.equals(FruitName.GLASS_DETAIL_FRUIT)) {
                if(disCountCode.equals(DiscountEnum.DISCOUNT_ENUM_EIGHTY_PERCENT_GLASS_FRUIT.getDiscountCode())){
                    BigDecimal multiply = FruitPrice.GLASS_DETAIL_FRUIT_PRICE.getPrice().multiply(new BigDecimal(shoppingFruitItemAmount));
                    BigDecimal multiply1 = multiply.multiply(new BigDecimal("0.80"));
                    totalAmount.add(multiply1);
                    return totalAmount;
                }
            } else if (disCountCode.equals(DiscountEnum.DISCOUNT_ENUM_SHOPING_TOTAL_PRICE_MINUS.getDiscountCode())) {
                if (fruitType.equals(FruitName.APPLE)){
                    BigDecimal multiply = FruitPrice.APPLE_PRICE.getPrice().multiply(new BigDecimal(shoppingFruitItemAmount));
                    totalAmount.add(multiply);
                    return totalAmount;
                } else if (fruitType.equals(FruitName.MANGO)){
                    BigDecimal multiply = FruitPrice.MANGO_PRICE.getPrice().multiply(new BigDecimal(shoppingFruitItemAmount));
                    totalAmount.add(multiply);
                    if (totalAmount.equals(new BigDecimal("100.00"))){
                        totalAmount.subtract(new BigDecimal("10.00"));
                    }
                    return totalAmount;
                }
            }
        }
        return null;
    }
}
class SuperMarketCustomer{
    private String id;
    private String name;
    private String superMarketId;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSuperMarketId() {
        return superMarketId;
    }

    public void setSuperMarketId(String superMarketId) {
        this.superMarketId = superMarketId;
    }
}
class SuperMarket{
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
class Goods{
    private String id;
    private String name;
    private BigDecimal price;
    private String superMarketId;
    private String discountActivityId;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public String getSuperMarketId() {
        return superMarketId;
    }

    public void setSuperMarketId(String superMarketId) {
        this.superMarketId = superMarketId;
    }

    public String getDiscountActivityId() {
        return discountActivityId;
    }

    public void setDiscountActivityId(String discountActivityId) {
        this.discountActivityId = discountActivityId;
    }
}
class GoodsItem{
    private String id;
    private String name;
    private String goodsId;
    private Integer shoppingAmount;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getGoodsId() {
        return goodsId;
    }

    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }

    public Integer getShoppingAmount() {
        return shoppingAmount;
    }

    public void setShoppingAmount(Integer shoppingAmount) {
        this.shoppingAmount = shoppingAmount;
    }
}
class DiscountActivity{
    private String id;
    private String name;
    private Integer discountCode;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Integer getDiscountCode() {
        return discountCode;
    }

    public void setDiscountCode(Integer discountCode) {
        this.discountCode = discountCode;
    }
}
enum DiscountEnum{
    DISCOUNT_ENUM_EIGHTY_PERCENT_GLASS_FRUIT("0001","草莓水果价格打八折"),
    DISCOUNT_ENUM_SHOPING_TOTAL_PRICE_MINUS("0002","购物满100减10元");
    private String discountCode;
    private String desc;
    DiscountEnum(String discountCode,String desc){
        this.discountCode=discountCode;
        this.desc=desc;
    }

    public String getDiscountCode() {
        return discountCode;
    }

    public String getDesc() {
        return desc;
    }
}
enum FruitName{
    APPLE(0001,"苹果"),
    GLASS_DETAIL_FRUIT(0002,"草莓"),
    MANGO(0003,"芒果");
    private Integer fruidCode;
    private String descName;
    FruitName(Integer fruidCode,String descName){
        this.fruidCode=fruidCode;
        this.descName=descName;
    }

    public Integer getFruidCode() {
        return fruidCode;
    }

    public String getDescName() {
        return descName;
    }
}
enum FruitPrice{
    APPLE_PRICE(0001,"苹果8元一斤",new BigDecimal("8.00")),
    GLASS_DETAIL_FRUIT_PRICE(0002,"草莓13元一斤",new BigDecimal("13.00")),
    MANGO_PRICE(0003,"芒果20元一斤",new BigDecimal("20.00"));
    private Integer priceCode;
    private String priceDesc;
    private BigDecimal price;
    FruitPrice(Integer priceCode,String priceDesc,BigDecimal price){
        this.priceCode=priceCode;
        this.priceDesc=priceDesc;
        this.price=price;
    }

    public Integer getPriceCode() {
        return priceCode;
    }

    public String getPriceDesc() {
        return priceDesc;
    }

    public BigDecimal getPrice() {
        return price;
    }
}
#如果可以,你希望哪个公司来捞你##leader认为你工作不认真怎么办##牛客创作赏金赛##我的国央企投递进展##国企是理工四大天坑的最好选择吗#
Java技术 文章被收录于专栏

JavaEE技术 编程开发经验 企业通用技术

全部评论

相关推荐

10-21 10:37
已编辑
中国科学院大学 人工智能
时长&nbsp;100分钟,一天内任意时间作答比较人性。题型分布:1.党性测试题&nbsp;10&nbsp;*1分&nbsp;=&nbsp;10分2.基础单选&nbsp;20&nbsp;*2分&nbsp;=&nbsp;40分3.c/c++/java/python/JavaScript单选&nbsp;5&nbsp;*2分&nbsp;=&nbsp;10分&nbsp;(任选一个语言方向)4.编程题&nbsp;2道(20分+30分)=50分细节介绍:1.党性测试题:例如,预备党员需要多久。2.基础单选:包含了运维题、SQL、C++、python等,出的很广(吐槽下,研发岗为什么这么多运维题?)。3.单选:例如,给个程序,输出是什么。4.编程题:1).计算从p站到q站的最小距离。给出了站点数,相邻两个站点间的距离,且所有站点呈现&nbsp;A站、B站、...、N站、A站的环结构。例子,有3个站点a,b,c。ab距离,1,bc距离,2,ca距离2。求从b站到c站的最小距离。即求解&nbsp;b-&gt;c&nbsp;与&nbsp;b-&gt;a-&gt;c&nbsp;间的最小值。示例代码:n=3distance=[1,2,2]start,end=2,3new_start,new_end=min(start,end),max(start,end)sum_distance=sum(distance)shun_distance=sum(distance[new_start-1:new_end-1])res=min(shun_distance,sum_distance-shun_distance)print(res)2).计算1w个小写字符(字符范围:a,&nbsp;b,&nbsp;c,&nbsp;...,&nbsp;z),统一为一个字符所需要的最小操作数。例如,a转换为相邻的b需要一次操作数。特殊的,环状结构,z可以通过一次操作数转换为a。示例代码1:暴力解法&nbsp;(55%通过率,超时):import&nbsp;sysdata=sys.stdin.read().strip().split()it=iter(data)strs=list(next(it))adict={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26}nums=[adict[sub_str]&nbsp;for&nbsp;sub_str&nbsp;in&nbsp;strs]n=len(nums)def&nbsp;change(raw_num,target_num):changes=0if&nbsp;raw_num&lt;target_num:up=target_num-raw_num&nbsp;#&nbsp;11down=(raw_num)+26-target_numelse:down=raw_num-target_numup=26-raw_num+target_numreturn&nbsp;min(down,up)import&nbsp;copymin_change=float('inf')for&nbsp;cur_num&nbsp;in&nbsp;nums:counts=0cur_nums=copy.deepcopy(nums)cur_nums.remove(cur_num)for&nbsp;num&nbsp;in&nbsp;nums:counts+=change(num,cur_num)min_change=min(min_change,counts)print(min_change)示例代码2&nbsp;优化为统计左右数量,取中间值。现场没有调好,只通过27%。下面是AI润色后的示例代码(仅供参考):adict&nbsp;=&nbsp;{'a':&nbsp;1,&nbsp;'b':&nbsp;2,&nbsp;'c':&nbsp;3,&nbsp;'d':&nbsp;4,&nbsp;'e':&nbsp;5,&nbsp;'f':&nbsp;6,&nbsp;'g':&nbsp;7,&nbsp;'h':&nbsp;8,&nbsp;'i':&nbsp;9,&nbsp;'j':&nbsp;10,'k':&nbsp;11,&nbsp;'l':&nbsp;12,&nbsp;'m':&nbsp;13,&nbsp;'n':&nbsp;14,&nbsp;'o':&nbsp;15,&nbsp;'p':&nbsp;16,&nbsp;'q':&nbsp;17,&nbsp;'r':&nbsp;18,&nbsp;'s':&nbsp;19,&nbsp;'t':&nbsp;20,'u':&nbsp;21,&nbsp;'v':&nbsp;22,&nbsp;'w':&nbsp;23,&nbsp;'x':&nbsp;24,&nbsp;'y':&nbsp;25,&nbsp;'z':&nbsp;26}#&nbsp;假设输入字符串s&nbsp;=&nbsp;&quot;acz&quot;nums&nbsp;=&nbsp;[adict[c]&nbsp;for&nbsp;c&nbsp;in&nbsp;s]def&nbsp;change(raw,&nbsp;target):diff&nbsp;=&nbsp;abs(raw&nbsp;-&nbsp;target)return&nbsp;min(diff,&nbsp;26&nbsp;-&nbsp;diff)#&nbsp;把字母值转换到环形区间&nbsp;[-13,&nbsp;12]nums2&nbsp;=&nbsp;[num&nbsp;-&nbsp;26&nbsp;if&nbsp;num&nbsp;&gt;=&nbsp;14&nbsp;else&nbsp;num&nbsp;for&nbsp;num&nbsp;in&nbsp;nums]nums2.sort()n&nbsp;=&nbsp;len(nums2)if&nbsp;n&nbsp;%&nbsp;2&nbsp;==&nbsp;1:target&nbsp;=&nbsp;nums2[n&nbsp;//&nbsp;2]ans&nbsp;=&nbsp;sum(change(num,&nbsp;target)&nbsp;for&nbsp;num&nbsp;in&nbsp;nums2)else:t1,&nbsp;t2&nbsp;=&nbsp;nums2[n&nbsp;//&nbsp;2&nbsp;-&nbsp;1],&nbsp;nums2[n&nbsp;//&nbsp;2]ans&nbsp;=&nbsp;min(sum(change(num,&nbsp;t1)&nbsp;for&nbsp;num&nbsp;in&nbsp;nums2),sum(change(num,&nbsp;t2)&nbsp;for&nbsp;num&nbsp;in&nbsp;nums2))print(ans)
投递中国移动等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务