Я хочу, чтобы программа распечатывала список смежности данного входа, используя карты и наборы. Сам вход должен быть ориентированным графом, и каждая строка должна быть ребро. Я хочу, чтобы пользователь вводил край ввода по краю, а затем вводил пустую строку для запуска программы. Я не могу проверить, работает ли это, потому что, когда я пытаюсь запустить программу и вводить пустую строку, курсор просто перемещается в следующую строку и не запускает программу. Я полагаю, что он должен что-то сделать с одним из моих циклов, но я не спешил ни на один час, ни на что не повезло. Что-нибудь помогает!Как я могу заставить свою программу прекратить прием входных данных и запустить программу?
import java.util.*;
public class AdjList {
public static void main(String[] args) {
Map<String, Set<String>> graph = new TreeMap<String, Set<String>>();
ArrayList<String> lines = new ArrayList<String>();
boolean control = true;
while(control == true){
Scanner in = new Scanner(System.in);
if (in.nextLine().length() == 0){
control = false;
} else {
while (in.hasNextLine()) {
lines.add(in.nextLine());
if (in.nextLine().length() == 0){
break;
}
}
for (int i = 0; i < lines.size(); i++){
String line = lines.get(i);
String[] vertices = line.split(" ");
if (graph.get(vertices[0]) == null){
Set<String> newSet = new HashSet<String>();
newSet.add(vertices[1]);
graph.put(vertices[0], newSet);
} else {
Set<String> oldSet = new HashSet<String>();
oldSet = graph.get(vertices[0]);
oldSet.add(vertices[1]);
graph.put(vertices[0], oldSet);
}
}
}
}
for(String entry : graph.keySet()) {
System.out.println(entry + ":" + graph.get(entry));
}
}
}
Пример того, что вход будет является:
A B
C D
B D
E C
E B
А затем ввести пустую строку для запуска. Дайте мне знать, если вам нужна дополнительная информация.
CTRL + D имитирует eof, я верю. Таким образом, вы можете сделать это! = Eof, и когда пользователь нажмет CTRL + D, он запустит – bpgeck
@bpgeck. Я бы использовал это, но это задание, и мой профессор специально хочет, чтобы он запускался, когда вводилась пустая строка. Я сделал это раньше в прошлом задании, но не могу взломать его –
Прежде всего, похоже, что вы пропустили первую строку ввода. Ваше заявление if перед else получает следующую строку и не присваивает ей ничего – bpgeck