【发布时间】:2015-11-09 21:49:25
【问题描述】:
我一直在尝试制作迷宫类型的游戏,方法是使用 HashMaps 从配置文件中读取来区分房间属性和门属性。如果我只打印 String[] 值,它们会打印相应的配置值,但是,当我尝试使用 HashMap 通过键调用它来打印值时,它会告诉我这些值为空。 有什么建议吗?
我的代码:
while (file.hasNextLine()) {
String line = file.nextLine();
if (line.isEmpty()) {
continue;
}
Scanner scanner = new Scanner(line);
String type = scanner.hasNext() ? scanner.next() : "";
String name = scanner.hasNext() ? scanner.next() : "";
String wall1 = scanner.hasNext() ? scanner.next() : "";
String wall2 = scanner.hasNext() ? scanner.next() : "";
String wall3 = scanner.hasNext() ? scanner.next() : "";
String wall4 = scanner.hasNext() ? scanner.next() : "";
HashMap<String,String[]> roomSite = new HashMap<String, String[]>();
HashMap<String,String[]> doorSite = new HashMap<String, String[]>();
String[] options = new String[]{wall1,wall2,wall3,wall4};
if(type.equals("room")){
roomSite.put(name, options);
}else if(type.equals("door")){
doorSite.put(name, options);
}else{
System.out.println("Error in config file. Please check that all options are valid.");
}
System.out.println(roomSite.get(0));
System.out.println(doorSite.get("d0"));
}
输出:
null
null
null
null
null
null
null
[Ljava.lang.String;@e9e54c2
null
null
config.ini
room 0 wall d0 wall wall
room 1 d0 wall d1 wall
room 2 wall wall wall d1
door d0 0 1 close
door d1 1 2 open
【问题讨论】:
-
好吧,当它打印
null时,您是否将0作为roomSite中的键或"d0"作为doorSite中的键? -
如果您在线路上使用
String.split()而不是所有那些扫描仪,可能会更有意义。
标签: java arrays string hashmap