加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何将BigDecimal传递给方法?

发布时间:2020-12-15 04:41:10 所属栏目:Java 来源:网络整理
导读:这是我的第一个 Java应用程序.我正在尝试创建产品(键)及其价格(值)的地图.文档说我不能用双打来赚钱,所以我必须使用BigDecimal.关于如何在我的方法和地图中使用BigDecimal,我完全陷入困境. 我只有一种方法可以将产品添加到地图中,而我正试图传递BigDecimal P
这是我的第一个 Java应用程序.我正在尝试创建产品(键)及其价格(值)的地图.文档说我不能用双打来赚钱,所以我必须使用BigDecimal.关于如何在我的方法和地图中使用BigDecimal,我完全陷入困境.

我只有一种方法可以将产品添加到地图中,而我正试图传递BigDecimal Price.它不会编译,因为它看到一个字符串而不是BigDecimal,这让我感到困惑,因为BigDecimal接受字符串作为参数(例如BigDecimal example = new BigDecimal(“2.50”))

我还想创建一个方法,将总价格增加,但你不能用字符串来做.关于BigDecimal的文档非常混乱,谷歌也没有多大帮助.有人可以解释一下BigDecimal以及如何使用它吗?

到目前为止这是我的代码:

注册课程:

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class Register {
    private HashMap<String,BigDecimal> productMap = new HashMap<>();

    public void printProductMap() {
        for(Map.Entry<String,BigDecimal> entry : productMap.entrySet()) {
            String key = entry.getKey();
            BigDecimal value = entry.getValue();
            System.out.println(key + " " + value);
        }
    }

    public HashMap<String,BigDecimal> addProduct(String product,BigDecimal price) {
        BigDecimal productPrice = new BigDecimal(price);
        productMap.put(product,productPrice);
        return productMap;
    }
}

主要课程:

public class Main {

    public static void main(String[] args) {

        Register register = new Register();
        register.addProduct("Coffee","1.25");
        register.addProduct("Cappuccino","1.50");
        register.printProductMap();
    }
}

解决方法

BigDecimal有一个带String的构造函数这一事实并不意味着将String传递给一个采用BigDecimal的方法.

这个问题有两种解决方案:

>将addProduct的第二个参数的类型更改为String – 代码将继续编译,因为您在方法内构造了BigDecimal,或者
>传递新的BigDecimal作为第二个参数 – 调用如下:register.addProduct(“Coffee”,new BigDecimal(“1.25”));

第一种方法的变化如下:

public HashMap<String,String price) {
    // This is the only change -------------------------------^^^^^^
    BigDecimal productPrice = new BigDecimal(price);
    productMap.put(product,productPrice);
    return productMap;
}

第二种方法的变化如下:

public HashMap<String,BigDecimal price) {
    // No need to create productPrice,because price is BigDecimal
    productMap.put(product,price);
    return productMap;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读