当前位置: 首页 > 知识库问答 >
问题:

如何将BigDecimal传递给方法?

秦炜
2023-03-14

这是我的第一个Java应用程序。我正在尝试创建一个产品(键)和它们的价格(值)的地图。文档上说我不能用doubles换钱,所以我得用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();
    }
}

共有1个答案

仲孙才捷
2023-03-14

BigDecimal具有一个接受字符串的构造函数,这并不意味着可以将字符串传递给接受BigDecimal的方法。

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

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

第一种方法的更改如下所示:

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

第二种方法的更改如下所示:

public HashMap<String, BigDecimal> addProduct(String product, BigDecimal price) {
    // No need to create productPrice, because price is BigDecimal
    productMap.put(product, price);
    return productMap;
}
 类似资料:
  • 问题内容: 基本上我有一个ArrayList的位置: 在此之下,我调用以下方法: getMap()方法中的参数为: 我遇到的问题是我不确定如何在整个方法列表中传递该方法。 我试过了 但是getMap不接受,因为它不接受Objects []。 现在,如果我使用 它会完美地工作…但是我需要以某种方式传递所有位置…我当然可以继续添加等等,但是数组的大小会有所不同。我只是不习惯整个概念 最简单的方法是什么

  • 我的RestController中有如下API方法 类如下所示。 在postman中,我传递了一个JSON字符串,如 我得到一个错误说 2021-08-16 18:25:53.953警告4164---[io-8080-exec-10]. w. s. m. s.DefaultHandlerExceptionResolver:已解决[org.springframework.http.converter

  • 问题内容: 我知道不推荐这样做,但是是否可以将用户密码传递给scp? 作为批处理作业的一部分,我想通过scp复制文件,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。 问题答案: 您就可以使用一个工具脚本它预期(有得心应手绑定太像Pexpect的为Python)。

  • 问题内容: 我试图将URI对象传递给我的Intent,以便在另一个活动中使用该URI。 如何传递URI? 现在如何在其他活动中使用此URI? 感谢你们 问题答案: 您可以将uri存储为字符串 然后像这样将字符串转换回uri

  • 问题内容: 在我的ASP.NET MVC应用程序中,我希望用户将值添加到文本框中,然后按Ajax.ActionLink。我想做这样的事情: Ajax.ActionLink(“ Go”,“ Action”,“ Controller”,新的{value = textbox1.value}) 还是我还能如何使此文本框值返回到我的操作?jQuery的? 问题答案: 您可以使用AJAX $ .get方法运行

  • 问题内容: 我需要更新我的时间。该值由正在执行的函数返回。 返回一个整数。 这将返回未防御状态。因此,我需要获取计数并将其传递给 问题答案: 如果您需要在每次调用之后更改重复间隔,则不能使用-使用恒定重复。您需要使用,因此您可以每次更改时间段: