为什么我的变量似乎丢失了我最近添加的内容?

时间:2014-07-14 17:01:35

标签: java key-value

我正在尝试将RGB值添加到名为

的变量中
HashMap<Integer,Couple> basicProvince

我用以下方法执行此操作:

public void initBasicRGB(String definitionCSVContent) {
    System.out.println("initBasicRGB");
    String[] lines = definitionCSVContent.split("\n");
    String[] values;
    int i = 0;
    for (String s : lines) {
        values = s.split(";");
        if (!s.isEmpty() && values.length == 6 && i != 0 && !values[0].equals("")) {
            int red = Integer.parseInt(values[1]);
            int green = Integer.parseInt(values[2]);
            int blue = Integer.parseInt(values[3]);
            if (basicProvince.get(Integer.parseInt(values[0])) != null) {
                basicProvince.get(Integer.parseInt(values[0])).setColor(new Color(red, green, blue));
            }
        }
        i++;
    }

    for (Entry<Integer, Couple> e : basicProvince.entrySet()) {
        System.out.println("key = " + e.getKey() + "\t value= " + e.getValue().getName() + " " + e.getValue().getColor());
    }
}

所有输出都显示应有的一切。 例如:

key = 8  value= breifne java.awt.Color[r=126,g=24,b=4]

在此方法之后立即调用下面的下一个应该使用此变量中的信息并在

中使用该信息
c.setBasicRGB(e.getValue().getColor());

    public void giveCountyBasicRGB() {
    String name = "";
    System.out.println("give county basicRGB");
    for (Entry<Integer, Couple> e : basicProvince.entrySet()) {
        System.out.println("key = " + e.getKey() + "\t value= " + e.getValue().getName() + " " + e.getValue().getColor());
    }

    for (County c : countyList) {
        name = c.getName();
        for (Entry<Integer, Couple> e : basicProvince.entrySet()) {
            if (name.equalsIgnoreCase(e.getValue().getName())) {
                System.out.println("color " + e.getValue().getColor() + " name " + e.getValue().getName());
                // here you can see the line that retrieves the info
                c.setBasicRGB(e.getValue().getColor());
            }
        }

        if (c.getBasicRGB() == null) {
            System.out.println("Warning: " + c.getName() + " does not have a basic rgb");
        }
    }
}

奇怪的是,我的第一种方法使用以下代码向我显示了正确的颜色。

       for (Entry<Integer, Couple> e : basicProvince.entrySet()) {
           System.out.println("key = " + e.getKey() + "\t value= " +  e.getValue().getName() + " " + e.getValue().getColor());
       }

当我的第二种方法在她的身体中运行相同的代码时。

我的

为空
e.getValue().getColor()

即使我刚刚在第一种方法中添加了这些信息。

感谢您的时间和道歉,如果有些事情不够清楚。

1 个答案:

答案 0 :(得分:0)

如果我理解你的代码是正确的,变量“e”似乎是for循环的本地变量,当你尝试将它作为参数传递给SetBasicRGB函数时,该值就消失了。 也许使用for循环外定义的另一个更多变量?