如何映射字符串并与另一个字符串进行比较?

时间:2016-12-18 07:26:26

标签: android string bluetooth compare

这个问题可能很愚蠢,但我无法做到这一点。我有一个支付设备,我通过蓝牙连接到我的应用程序。要让设备显示货币代码,我需要传递一个字符串,如下所示:

String codeForPaymendDevice = "978";

这" 978"基本上发送" EUR"货币代码并显示在支付设备的屏幕上。 (设备的库映射并处理此问题)。在我的应用中,当用户以欧元货币进行购买时,应与" 978(EUR)"如果两者都匹配,它应该解析codeForPaymentDevice。我无法做到这一点,因为我无法比较" EUR" 978(因为我的代码并不知道978是欧元,只有支付设备知道978是欧元)。

我需要做的是,映射" 978"到" EUR"代码,然后将transaction.getCurrencyCode()与映射变量进行比较,然后解析它。

private SaleRequest buildTransactionRequest(Transaction transaction) {
        final SaleRequest tr = new SaleRequest();
        BigDecimal amount = getAmountPaid();
        String codeForPaymentDevice = "978";
        String formattedAmount;
        try {
            if (!transaction.getCurrencyCode().equalsIgnoreCase(CREW_CURRENCY)) {
                formattedAmount = AirFiApplication
                        .getPriceFormatter(AirFiApplication.getCurrency(transaction.getCurrencyCode())).format(amount);

                // transaction.getCurrencyCode = EUR 

                tr.setCurrency(codeForPaymentDevice); // TODO remove hardcoding
            } 

        } catch (MPosValueException e) {
            LOG.error("Error while building transaction request due to {}", e.getLocalizedMessage());

        }
        return tr;
    }

1 个答案:

答案 0 :(得分:1)

您可以创建一个Map,其中包含一些密钥(现在我已经使用过货币代码),并且您需要将值作为值传递。

Map<String, String> map = new HashMap<>();
map.put("EUR", "978");
map.put("INR", "979");
map.put("USD", "980");
map.put("AED", "981");
...

在您的代码中,

tr.setCurrency(map.get(transaction.getCurrencyCode()));