Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hashmap提供null值,即使键和值不为null_Java_Null_Hashmap - Fatal编程技术网

Java hashmap提供null值,即使键和值不为null

Java hashmap提供null值,即使键和值不为null,java,null,hashmap,Java,Null,Hashmap,我编写了一个代码,从表中获取值,并将其放入带有键值对的映射中,然后返回映射。 public Map<String, BigDecimal> fnFetchCartSummary() throws Exception { Map<String, BigDecimal> mCartSummaryMap = new HashedMap<String, BigDecimal>(); int iCartCount = client.get

我编写了一个代码,从表中获取值,并将其放入带有键值对的映射中,然后返回映射。

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;
    } 
但当我试图捕捉同一张地图并试图从中获取价值时

 Map<String, BigDecimal> mCartValue1 = client.shoppingCart.fnFetchCartSummary();
BigDecimal Subtotal1_1 = mCartValue1.get("Subtotal");
System.out.println(Subtotal1_1);
Map mCartValue1=client.shoppingCart.fnFetchCartSummary();
BigDecimal小计1_1=mCartValue1.get(“小计”);
系统输出打印LN(小计1_1);
它会像这样为每个键值对显示null

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


如果有人遇到同样的问题,请向我建议一个解决方案。我已经用示例演示进行了尝试。这对我来说很好

  • 请使用
    HashMap
    而不是
    HashedMap
    或验证什么是
    HashedMap
    实现
  • 检查
    String sCharges=RowValue.replaceAll(“,Integer.toString(i))行正确返回金额值,如$1200
  • 公共类TestHashMap{
    公共静态void main(字符串[]args){
    Map mCartValue1=fnFetchCartSummary();
    BigDecimal小计1_1=mCartValue1.get(“小计”);
    系统输出打印LN(小计1_1);
    }
    公共静态映射fnFetchCartSummary(){
    Map mCartSummaryMap=newhashmap();
    //字符串sCharges=“Rs1200”;
    double sPrice=double.parseDouble(“Rs1200.replaceAll”([^0-9.]+”,“);
    BigDecimal bdPrice=新的BigDecimal(sPrice);
    mCartSummaryMap.put(“MPVPERTKTF”,新的BigDecimal(10));
    mCartSummaryMap.put(“小计”,bdPrice);
    mCartSummaryMap.put(“MPVEVTF”,新的BigDecimal(15));
    mCartSummaryMap.put(“到期总金额”,新的BigDecimal(1227));
    返回MCARTSUMARYMAP;
    } 
    }
    
    我尝试了示例演示。这对我来说很好

  • 请使用
    HashMap
    而不是
    HashedMap
    或验证什么是
    HashedMap
    实现
  • 检查
    String sCharges=RowValue.replaceAll(“,Integer.toString(i))行正确返回金额值,如$1200
  • 公共类TestHashMap{
    公共静态void main(字符串[]args){
    Map mCartValue1=fnFetchCartSummary();
    BigDecimal小计1_1=mCartValue1.get(“小计”);
    系统输出打印LN(小计1_1);
    }
    公共静态映射fnFetchCartSummary(){
    Map mCartSummaryMap=newhashmap();
    //字符串sCharges=“Rs1200”;
    double sPrice=double.parseDouble(“Rs1200.replaceAll”([^0-9.]+”,“);
    BigDecimal bdPrice=新的BigDecimal(sPrice);
    mCartSummaryMap.put(“MPVPERTKTF”,新的BigDecimal(10));
    mCartSummaryMap.put(“小计”,bdPrice);
    mCartSummaryMap.put(“MPVEVTF”,新的BigDecimal(15));
    mCartSummaryMap.put(“到期总金额”,新的BigDecimal(1227));
    返回MCARTSUMARYMAP;
    } 
    }
    
    这是不可能的。我确信您正在做其他事情。因为我已经为特定工具编写了此代码。从java的角度来看,您能详细说明这里的问题吗?您能使用调试器检查map
    mCartValue1
    包含哪些元素吗?(或者简单地打印出来)看起来像是从某个外部资源(可能是DOM或类似的东西)获取映射的字符串值。显示为“小计”的字符串很可能在该版本中包含一些不可见的字符。打印出每个键的长度,并对照文本进行目视检查,以验证其中没有不可见的字符。可以执行
    System.out.println(mCartValue1)吗
    BigDecimal小计1\u 1=mCartValue1.get(“小计”)前面的行上并将其添加到您的帖子中。这是不可能的。我确信您正在做其他事情。因为我已经为特定工具编写了此代码。从java的角度来看,您能详细说明这里的问题吗?您能使用调试器检查map
    mCartValue1
    包含哪些元素吗?(或者简单地打印出来)看起来像是从某个外部资源(可能是DOM或类似的东西)获取映射的字符串值。显示为“小计”的字符串很可能在该版本中包含一些不可见的字符。打印出每个键的长度,并对照文本进行目视检查,以验证其中没有不可见的字符。可以执行
    System.out.println(mCartValue1)吗
    BigDecimal小计1\u 1=mCartValue1.get(“小计”)前面的行上
    并将其添加到您的帖子谢谢您的回复,我在这一行找到了错误字符串sVariableName=client.getText(sVariablexpath.replace(“:”,”);它将获取带有空格的键名,并在修剪后工作正常。调试时,它将正确显示,但在打印映射时,我们将了解额外的空间。感谢您的响应,我在此行中发现了错误字符串sVariableName=client.getText(sVariablexpath)。替换(“:”,”);它将获取带有空格的键名,在修剪后,它工作正常。调试时,它将正确显示,但在打印地图时,我们将了解额外的空间。
    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;
        } 
    }