Я пытаюсь прочитать строки из файла конфигурации и добавить каждую строку в ArrayList
, используя метод add()
.
Однако, когда я иду печатать содержимое ArrayList
с использованием foreach
, он печатает только последний элемент, который нужно ввести. Мне кажется, что метод add () может не добавляться правильно? Я также попытался использовать универсальный для цикла вместо foreach
и все тот же результат.
public static void interpret(String line){
ArrayList<String> rooms = new ArrayList<>();
ArrayList<String> rules = new ArrayList<>();
// Ignore Room and Rule templates
if(line.contains("(") && line.contains(")")){
System.out.println("skip");
return;
}
if(line.contains("Room;")){
rooms.add(line);
rooms.forEach(System.out::println);
}
if(line.contains("Rule;")){
rules.add(line);
rules.forEach(System.out::println);
}
}
Вывод этого ниже.
Rule; (Room: SmartObject, state{condition}, state{condition}, ...)
skip
Rule; Garden: Sprinklers, on{time=15}, off{time=16}, off{weather="raining"}
Rule; Garden: Sprinklers, on{time=15}, off{time=16}, off{weather="raining"}
Rule; Kitchen: Coffee machine, on{time=6}, off{time=12}
Rule; Kitchen: Coffee machine, on{time=6}, off{time=12}
Он смешан с реальными текстовыми строками из файла, который он читает, но, как вы можете видеть, он печатает только строку над ним, которая была последней строкой, добавленной в ArrayList
.
Это должно выглядеть примерно так.
Rule; (Room: SmartObject, state{condition}, state{condition}, ...)
skip
Rule; Garden: Sprinklers, on{time=15}, off{time=16}, off{weather="raining"}
Rule; Garden: Sprinklers, on{time=15}, off{time=16}, off{weather="raining"}
Rule; Kitchen: Coffee machine, on{time=6}, off{time=12}
Rule; Garden: Sprinklers, on{time=15}, off{time=16}, off{weather="raining"}
Rule; Kitchen: Coffee machine, on{time=6}, off{time=12}
Любая помощь / понимание будет принята с благодарностью.