Цикл, который будет читать текстовый файл и добавлять информацию в узлы, а затем в дерево
Я создаю программу, которая читает текстовый файл и устанавливает информацию из него в узлы в тройном дереве. Я уже создал метод addNode, но сейчас я работаю над методом, который будет считывать импортированный текстиль и извлекать правильную информацию, устанавливать его для узлов и строить дерево. Текстовый файл предоставляется в следующем формате и используется для создания автоматизированной системы справочной службы.
Каждый узел имеет три переменные типа String: метка, подсказка и сообщение
root //label
Root Node //prompt
What Model is the Washing Machine? //message
root 3 //root signifies the next node to branch, and 3 is the # children
1 //label
WM200 //prompt
What is the problem? //message
2 //etc.
WM300
What is the problem?
3
WM400
What is the problem?
1 3
1-1
No Water.
Is the hose attached?
1-2
Water too hot.
Turn the temperature knob to warm.
1-3
Water too cold.
Turn the temperature knob to warm.
1-1 3
1-1-1
Yes, but the hose is broken.
Purchase a new hose.
1-1-2
No, didn't know there was a hose.
Plug it in the back.
1-1-3
Yes, but still no water.
Make sure the water valve is turned on.
Каждый раз, когда появляется полный объем информации (метка, приглашение, сообщение), мне нужно добавить узел в дерево в правильной позиции (под родительским, выровненным по левому краю)
Вот код, который у меня есть для метода. (предположим, что метод addNode работает правильно и добавляет узлы слева направо)
метод addNode принимает 4 параметра (метка, приглашение, сообщение, parentLabel)
parentLabel - это место, где будут размещены дети. Ex/ root - родительская метка в приведенном выше примере кода в строке 4.
while(line != null) { //while there is still content in the file
String label = line; //set label to first line
line = reader.readLine();
String prompt = line; //set prompt to second line
line = reader.readLine();
String message = line; //set message to third line
line = reader.readLine();
String parentLabel = "";;
String numChildren = "";
if(line.contains(" ")) {
parentLabel = line.substring(0, line.indexOf(" ")); //parent label up to first space
numChildren = line.substring(line.indexOf(" "), line.indexOf("\n")); //number of children from space to end
} else
numChildren = line; //if no space, line is number of children
tree.addNode(label, prompt, message, null); //add that node (parentLabel would be null becuase first node)
for(int i = 0; i < Integer.parseInt(numChildren); i++) {
line = reader.readLine();
label = line; //set label to first line
line = reader.readLine();
prompt = line; //set prompt to second line
line = reader.readLine();
message = line; //set message to third line
tree.addNode(label, prompt, message, parentLabel); //add node
}
Я думаю, что мой код близок, но он не всегда работает с данными шаблонами. Текстовый файл всегда будет в этом формате, однако метки не обязательно должны быть в каком-либо определенном формате, и они не обязательно будут состоять из цифр и тире.
Любая помощь с этим будет принята с благодарностью. Спасибо