将变量作为参数传递给hashmap的问题

时间:2016-07-06 02:25:46

标签: java hashmap

我在尝试将double常量作为参数传递给hashmap时遇到了问题。

public static final double Apple_Initial_Value = 30.0;
private static HashMap<String, Double> base_values = new HashMap<String, Double>() {{

    put("Apple", Apple_Initial_Value);
}};
System.out.println(base_values.get("Apple"));

结果如下:

0.0

然而,

public static final double Apple_Initial_Value = 30.0;
private static HashMap<String, Double> base_values = new HashMap<String, Double>() {{

    put("Apple", 30.0);
}};
System.out.println(base_values.get("Apple"));

结果如下:

30.0

刚刚完成了C语言课程,我的思维跳跃到它是某种通过引用传递和传递值的问题,但据我所知,java只是通过值传递,所以我不知所措

干杯,并提前致谢!

编辑:我很抱歉,看起来我上面发布的代码实际上并不表示我的代码中发生了什么(因为它实际上正在工作!)。更具体地说,情况分为两类,IR.java和Main.java。 IR.java的相关部分如下所示:

public class IR {

    public static final double Apple_Initial_Value = 30;
    public static HashMap<String, Double> base_values = new HashMap<String, Double>() {{

        put("Apple", Apple_Initial_Value);

    }};

    public static double get(String item) {
        double value = (double) base_values.get(item);
        return value;
    }
}

Main.java的相关部分如下所示:

public class Main {

    public static void main(String[] args) {

        System.out.println(IR.get("Apple"));
    }
}

2 个答案:

答案 0 :(得分:0)

编辑后的上面的代码是完全有效的,因为我在发布问题时添加了一个原来不存在于我的源代码中的拼写错误(图中所示)。我的源代码声明Apple_Initial_Value:

public static Apple_Initial_Value = 50;

但工作代码将其声明为:

public static final Apple_Initial_Value = 50;

很抱歉带领大家一起疯狂追逐,非常感谢您的时间!

为了举例说明我自己,我建议任何新的海报请阅读https://stackoverflow.com/help/mcve,以便在发布包含代码的问题之前学习如何制作最小,完整和可验证的例子。

答案 1 :(得分:-1)

您可以尝试这样:

public static void main(String[] args) {
    final double Apple_Initial_Value = 30.0;
    HashMap<String, Double> base_values = new HashMap<String, Double>() {{

        put("Apple", Apple_Initial_Value);
    }};
    System.out.println(base_values.get("Apple"));

}

更新新代码: 变量名称是incorect。只需在put语句中进行简单的更改:

put("Apple", Apple_Pie_Initial_Value);