Java hashmap, дающий нулевое значение, даже ключ и значение не нулевое - PullRequest
0 голосов
/ 05 марта 2020

Я написал код для извлечения значения из таблицы и размещения его на карте с парой ключ-значение и возврата карты.

public Map<String, BigDecimal> fnFetchCartSummary() throws Exception {
        Map<String, BigDecimal> mCartSummaryMap = new HashedMap<String, BigDecimal>();
        int iCartCount = client.getElementCount(CartTotal);
        if (iCartCount > 1) {
            client.ValidateTest(true, "Service charges are getting displayed for Cart. Total entries = " + iCartCount);
            for (int i = 1; i <= iCartCount; i++) {
                String sVariablexpath = sRowKey.replaceAll("<REPLACE>", Integer.toString(i));
                String sVariableName = client.getText(sVariablexpath).replace(":", "");
                String sCharges = RowValue.replaceAll("<REPLACE>", Integer.toString(i));
                double sPrice =Double.parseDouble( client.getText(sCharges).replaceAll("[^0-9.]+", ""));
                BigDecimal bdPrice = new BigDecimal(sPrice);
                mCartSummaryMap.put(sVariableName, bdPrice);
            }
        }
        return mCartSummaryMap;
    } 

Это вернет Карта со значениями, подобными этой

 {MPVPERTKTF=10, Subtotal=1200, MPVEVTF=15, Total Amount Due=1227, MPV SC001 SPD=2}

Но когда я пытаюсь поймать ту же карту и пытаюсь получить из нее значение.

 Map<String, BigDecimal> mCartValue1 = client.shoppingCart.fnFetchCartSummary();
BigDecimal Subtotal1_1 = mCartValue1.get("Subtotal");
System.out.println(Subtotal1_1);

Она будет показывать ноль для каждого ключа. пара значений, как это

ноль

Если кто-то сталкивался с той же проблемой, пожалуйста, предложите мне решение. 101

1 Ответ

2 голосов
/ 05 марта 2020

Я пробовал с примером демо. У меня все работало нормально.

  1. Пожалуйста, используйте HashMap вместо HashedMap или проверьте, что является реализацией HashedMap.
  2. проверьте, возвращает ли строка String sCharges = RowValue.replaceAll("<REPLACE>", Integer.toString(i)); сумму значение правильно, как $ 1200
public class TestHashMap {

    public static void main(String[] args) {
      Map<String, BigDecimal> mCartValue1 = fnFetchCartSummary();
      BigDecimal Subtotal1_1 = mCartValue1.get("Subtotal");
      System.out.println(Subtotal1_1);
    }


    public static Map<String, BigDecimal> fnFetchCartSummary() {
        Map<String, BigDecimal> mCartSummaryMap = new HashMap<String, BigDecimal>();

        //String sCharges = "Rs1200";
        double sPrice =Double.parseDouble( "Rs1200".replaceAll("[^0-9.]+", ""));
        BigDecimal bdPrice = new BigDecimal(sPrice);
        mCartSummaryMap.put("MPVPERTKTF", new BigDecimal(10));
        mCartSummaryMap.put("Subtotal", bdPrice);
        mCartSummaryMap.put("MPVEVTF", new BigDecimal(15));
        mCartSummaryMap.put("Total Amount Due", new BigDecimal(1227));

        return mCartSummaryMap;
    } 
}
...