Java 从我的mainclass(初学者)访问我的(正确的)Hashmap时返回null
您正在尝试在将HashMap条目放入其中之前访问它们。另外,请记住,只有在首次初始化时才能创建这样的数组。例如,该示例在以下情况下有效:Java 从我的mainclass(初学者)访问我的(正确的)Hashmap时返回null,java,null,hashmap,Java,Null,Hashmap,您正在尝试在将HashMap条目放入其中之前访问它们。另外,请记住,只有在首次初始化时才能创建这样的数组。例如,该示例在以下情况下有效: null-----------null-----------null | | | | null-------null-------null | | | | | | | | null---null---null | | | | | |
null-----------null-----------null
| | |
| null-------null-------null |
| | | | |
| | null---null---null | |
| | | | | |
null---null---null null---null---null
| | | | | |
| | null---null---null | |
| | | | |
| null-------null-------null |
| | |
null-----------null-----------null
您可以为Board类设置一个getter和setter方法,该方法接受映射并设置类中映射变量的值。您可以按如下方式更改代码。将映射数组放入方法中。这样就行了
import java.util.HashMap;
public class Board {
public static HashMap<String, String> spelMap;
public static String[] mapping;
public Board() {
spelMap = new HashMap<String, String>();
spelMap.put("A", ".");
spelMap.put("B", ".");
spelMap.put("C", ".");
spelMap.put("D", ".");
spelMap.put("E", ".");
spelMap.put("F", ".");
spelMap.put("G", ".");
spelMap.put("H", ".");
spelMap.put("I", ".");
spelMap.put("J", ".");
spelMap.put("K", ".");
spelMap.put("L", ".");
spelMap.put("M", ".");
spelMap.put("N", ".");
spelMap.put("O", ".");
spelMap.put("P", ".");
spelMap.put("Q", ".");
spelMap.put("R", ".");
spelMap.put("S", ".");
spelMap.put("T", ".");
spelMap.put("U", ".");
spelMap.put("V", ".");
spelMap.put("W", ".");
spelMap.put("X", ".");
}
public static void main(String args[]) {
Board board = new Board();
String[] mapping = {
"" + spelMap.get("A") + "-----------" + spelMap.get("B")
+ "-----------" + spelMap.get("C") + "",
"| | |",
"| " + spelMap.get("D") + "-------" + spelMap.get("E")
+ "-------" + spelMap.get("F") + " |",
"| | | | |",
"| | " + spelMap.get("G") + "---" + spelMap.get("H")
+ "---" + spelMap.get("I") + " | |",
"| | | | | |",
"" + spelMap.get("J") + "---" + spelMap.get("K") + "---"
+ spelMap.get("L") + " " + spelMap.get("M")
+ "---" + spelMap.get("N") + "---" + spelMap.get("O")
+ "",
"| | | | | |",
"| | " + spelMap.get("P") + "---" + spelMap.get("Q")
+ "---" + spelMap.get("R") + " | |",
"| | | | |",
"| " + spelMap.get("S") + "-------" + spelMap.get("T")
+ "-------" + spelMap.get("U") + " |",
"| | |",
"" + spelMap.get("V") + "-----------" + spelMap.get("W")
+ "-----------" + spelMap.get("X") + "" };
board.mapping = mapping;
for(int i=0; i < board.mapping.length; i++){
System.out.println(board.mapping[i]);
}
}
}
在这种情况下,HashMap只能在初始化之后访问。所以HashMap现在包含了带值的 这是因为 每个实例初始值设定项的主体与任何字段初始化表达式一起插入到类的每个构造函数的开头
请参见第3.2.4.1节我已经交换了映射和电路板的位置,不幸的是,它仍然返回空值。谢谢,这成功了!你能解释一下为什么它有效,为什么我的方法无效吗?@Ruben在你初始化字符串数组的时候是空的。你也可以检查我的调试点。所以你得到的都是空的。但在本例中,我们是在初始化后访问数组的。现在,您将获得键的映射值。如果你不明白我的意思,请留下评论。我想我明白了。我不明白为什么它必须成为一种工作方法,有没有简单的方法来解释这一点?
null-----------null-----------null
| | |
| null-------null-------null |
| | | | |
| | null---null---null | |
| | | | | |
null---null---null null---null---null
| | | | | |
| | null---null---null | |
| | | | |
| null-------null-------null |
| | |
null-----------null-----------null
import java.util.HashMap;
public class Board {
public static HashMap<String, String> spelMap;
public static String[] mapping;
public Board() {
spelMap = new HashMap<String, String>();
spelMap.put("A", ".");
spelMap.put("B", ".");
spelMap.put("C", ".");
spelMap.put("D", ".");
spelMap.put("E", ".");
spelMap.put("F", ".");
spelMap.put("G", ".");
spelMap.put("H", ".");
spelMap.put("I", ".");
spelMap.put("J", ".");
spelMap.put("K", ".");
spelMap.put("L", ".");
spelMap.put("M", ".");
spelMap.put("N", ".");
spelMap.put("O", ".");
spelMap.put("P", ".");
spelMap.put("Q", ".");
spelMap.put("R", ".");
spelMap.put("S", ".");
spelMap.put("T", ".");
spelMap.put("U", ".");
spelMap.put("V", ".");
spelMap.put("W", ".");
spelMap.put("X", ".");
}
public static void main(String args[]) {
Board board = new Board();
String[] mapping = {
"" + spelMap.get("A") + "-----------" + spelMap.get("B")
+ "-----------" + spelMap.get("C") + "",
"| | |",
"| " + spelMap.get("D") + "-------" + spelMap.get("E")
+ "-------" + spelMap.get("F") + " |",
"| | | | |",
"| | " + spelMap.get("G") + "---" + spelMap.get("H")
+ "---" + spelMap.get("I") + " | |",
"| | | | | |",
"" + spelMap.get("J") + "---" + spelMap.get("K") + "---"
+ spelMap.get("L") + " " + spelMap.get("M")
+ "---" + spelMap.get("N") + "---" + spelMap.get("O")
+ "",
"| | | | | |",
"| | " + spelMap.get("P") + "---" + spelMap.get("Q")
+ "---" + spelMap.get("R") + " | |",
"| | | | |",
"| " + spelMap.get("S") + "-------" + spelMap.get("T")
+ "-------" + spelMap.get("U") + " |",
"| | |",
"" + spelMap.get("V") + "-----------" + spelMap.get("W")
+ "-----------" + spelMap.get("X") + "" };
board.mapping = mapping;
for(int i=0; i < board.mapping.length; i++){
System.out.println(board.mapping[i]);
}
}
}
public class Board {
public HashMap<String, String> spelMap = new HashMap<String, String>();
Board() {
spelMap.put("A", ".");
spelMap.put("B", ".");
spelMap.put("C", ".");
spelMap.put("D", ".");
spelMap.put("E", ".");
spelMap.put("F", ".");
spelMap.put("G", ".");
spelMap.put("H", ".");
spelMap.put("I", ".");
spelMap.put("J", ".");
spelMap.put("K", ".");
spelMap.put("L", ".");
spelMap.put("M", ".");
spelMap.put("N", ".");
spelMap.put("O", ".");
spelMap.put("P", ".");
spelMap.put("Q", ".");
spelMap.put("R", ".");
spelMap.put("S", ".");
spelMap.put("T", ".");
spelMap.put("U", ".");
spelMap.put("V", ".");
spelMap.put("W", ".");
spelMap.put("X", ".");
}
public String[] postMethod() {
return new String[]
{
"" + spelMap.get("A") + "-----------" + spelMap.get("B") + "-----------" + spelMap.get("C") + "",
"| | |",
"| " + spelMap.get("D") + "-------" + spelMap.get("E") + "-------" + spelMap.get("F") + " |",
"| | | | |",
"| | " + spelMap.get("G") + "---" + spelMap.get("H") + "---" + spelMap.get("I") + " | |",
"| | | | | |",
"" + spelMap.get("J") + "---" + spelMap.get("K") + "---" + spelMap.get("L") + " " + spelMap.get("M") + "---" + spelMap.get("N") + "---" + spelMap.get("O") + "",
"| | | | | |",
"| | " + spelMap.get("P") + "---" + spelMap.get("Q") + "---" + spelMap.get("R") + " | |",
"| | | | |",
"| " + spelMap.get("S") + "-------" + spelMap.get("T") + "-------" + spelMap.get("U") + " |",
"| | |",
"" + spelMap.get("V") + "-----------" + spelMap.get("W") + "-----------" + spelMap.get("X") + ""
};
}
}
public static void main(String[] args) {
Board bord = new Board();
for(int i=0; i < bord.postMethod().length; i++){
System.out.println(bord.postMethod()[i]);
}
}
.-----------.-----------.
| | |
| .-------.-------. |
| | | | |
| | .---.---. | |
| | | | | |
.---.---. .---.---.
| | | | | |
| | .---.---. | |
| | | | |
| .-------.-------. |
| | |
.-----------.-----------.