Как преобразовать объекты в списке ссылок в строку?

#java

#Ява

Вопрос:

Я создаю класс графиков, которому нужен метод для первого поиска по ширине и другой для печати матрицы списка смежности. Мой класс вершин использует «int» для создания новой вершины, поэтому мне пришлось переходить от вершины к int и обратно, и именно здесь я столкнулся с этой проблемой. Мне нужен какой-то способ преобразования объектов вершин в списке ссылок в строку для печати, а в некоторых случаях для преобразования обратно в int (я использую метод Scanner nextInt() со строкой, но из-за того, как в списке ссылок хранятся элементы, которые вызывают исключение InputMismatchException). Приношу извинения за длинный пост, но я не был уверен, что все это потребуется для помощи, поэтому я скопировал оба метода.

 public static void breadthFirstSearch(Graph G, int root) //Initializes a search of the graph using the graph and a vertex to start from (default: 0)  {  Vertex rootVertex = new Vertex(root); //Creates a reference to the original root vertex to be used to make a "cloud of vertices"  Queuelt;Vertexgt; queue = new LinkedListlt;Vertexgt;(); //Makes a Queue that will hold the visited vertices  queue.add(rootVertex); //Adds the root vertex to the Queue  visitedNodes.add(rootVertex); //Adds the root vertex to the list of visited vertices since it has been visited  while(!queue.isEmpty()) //This loop will be executed until the Queue is empty  {  String listHead = ""   queue.poll()   "";  System.out.println(listHead);  Scanner scan = new Scanner(listHead);  int vertex = scan.nextInt();  for(Vertex v : Vertex.getAdjacentVertices(vertex)) //"For every vertex in the current vertex's list of adjacent vertices" this loop will execute  {  if(!visitedNodes.contains(v)) //If the vertex is not in the list of visited nodes, now it is!  {  visitedNodes.add(v);  queue.add(v);  }  }  }  String BFSorder = ""; //Initializes an empty String that will hold the list of visited vertices in the order in which they were visited  for(int i = 0; i lt; visitedNodes.size(); i  ) //Iterates through the list of visitedNodes  {  String currNode = ""   visitedNodes.get(i)   " "; //Transforms the current vertex into a String so it can be added to BFSorder  BFSorder = BFSorder   currNode; //Adds the String representing the current Node to BFSorder  }  System.out.println("Graph nodes visited in BFS Order: "   BFSorder   ""); //Prints out the list of visited vertices  }  
 public static void print(Graph G) //This method prints out an Adjacency List Matrix using the parameter Graph  {  for(int i = 0; i lt; visitedNodes.size(); i  ) //Iterates through the list of visited nodes  {  String adjVertex = "Adjacency list for vertex "   visitedNodes.get(i)   " Head "; //For each node, a new String is made  String currVertex = ""   visitedNodes.get(i)   ""; //These next three lines convert the vertex to an integer so it can be used for the for loop  Scanner scan = new Scanner(currVertex);  int vertex = scan.nextInt();  for(Vertex v : Vertex.getAdjacentVertices(vertex)) //Goes through the list of vertices adjacent to the current Vertex  {  String currNode = " -gt; "   v   ""; //Makes the vertex into a String with special formatting  adjVertex = adjVertex   currNode; //Adds the new string to adjVertex  }  System.out.println(adjVertex); //Prints out the list of adjacent vertices for the current vertex  }  }  

Огромное спасибо!

Комментарии:

1. Для вывода объектов на экран просто переопределите метод toString() и настройте его так, как вы хотите.

2. @Femke Спасибо, это сработало, теперь я сталкиваюсь с другими ошибками. Прогресс…?