我使用以下代码在try-catch块中填充HashMap,确实填充得很好。 问题是在try-catch块之外,它似乎是空的。 它是一个可变范围定义问题吗?这可能很简单,但我被卡住了,请帮忙。
public class Degrees {
HashMap<String,String> HM = new HashMap<String,String> ();
public static void main(String[] args) {
try ....
HM.put(Integer.toString(users),Integer.toString(counter));
System.out.println("HMsize:" + HM.size());
catch ....
try ...
System.out.println("HMsize:" + HM.size()); ---> appears 0
catch ...
答案 0 :(得分:0)
主要方法是Static(即每个类一个实例),HashMap不是静态的,这意味着你必须实例化该方法。
什么会起作用,但不要那样做
public class Degrees {
private static HashMap<String,String> HM = new HashMap<String,String> ();
使用静态变量通常是一种非常糟糕的设计,当在更多地方使用类时可能会导致错误。
您可能想要做的是在班级范围内定义地图:
public class Degrees {
public static void main(String[] args) {
HashMap<String,String> HM = new HashMap<String,String> ();
try ....
答案 1 :(得分:0)
上面的代码无法编译,因为静态上下文中无法引用非静态变量HashMap。请确保尝试将静态修饰符添加到HashMap。
private static HashMap<String,String> HM = new HashMap<String,String> ();