我正在尝试将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()
即使我刚刚在第一种方法中添加了这些信息。
感谢您的时间和道歉,如果有些事情不够清楚。
答案 0 :(得分:0)
如果我理解你的代码是正确的,变量“e”似乎是for循环的本地变量,当你尝试将它作为参数传递给SetBasicRGB函数时,该值就消失了。 也许使用for循环外定义的另一个更多变量?