Я пытался создать тип лабиринта, читая его из файла конфигурации с помощью HashMaps, чтобы различать атрибут Room и атрибут двери. Если я просто печатаю значения String [], они печатают соответствующие значения конфигурации, однако, когда я пытаюсь распечатать значения с помощью HashMap, вызывая его по его ключу, он сообщает мне, что значения равны нулю. Любые советы?Значения String Array и HashMaps
Мой код:
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"));
}
Выход:
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
Ну, у вас есть '0' в качестве ключа в '' roomSite' или «d0» 'как ключ' doorSite' на итерациях, когда она печатает 'null'? –
Это может иметь смысл, если вы используете ['String.split()'] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split (java.lang .String)) на вашей линии, а не на всех этих сканерах. –