Using Scanner to Read in a Graph.txt
#i
Reading a text file for a graph
Posted 02 May 2022 - 02:07 PM
I'chiliad trying to print the number of vertices in a text file on a graph which is the first integer in the file and then the blazon of graph is an undirected graph for a 0 or a 1 for a directed graph. Correct at present I'm just trying to print the number of vertices which is a 6 in the text file
Here'south the text file:
half dozen,1
0,2 0,4 1,4 i,five 2,one 2,iii 2,v 3,2 3,four four,1 4,5 5,ane 5,3 5,2
Im getting the following error:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 0
at java.util.ArrayList.rangeCheckForAdd(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at Vertices.main(Vertices.java:21)
And then I need to know how to become about reading the next line in the file, do you read information technology with the nextLine
and put it into an arrayList or practise I read each alphabetize in the graph?
public class Vertices { public static void main(String[] args) throws Exception { Scanner inFile = new Scanner(new File("graphs.txt")); // Read the number of vertices Cord line = inFile.nextLine(); ArrayList<Integer> list=new ArrayList<Integer>(); Cord[] information=line.carve up("[\\,]"); int numberofvertices=Integer.parseInt(data[0]); int typeOfGraph=Integer.parseInt(data[1]); listing.add(numberofvertices,typeOfGraph); System.out.println("The number of vertices is " + numberofvertices); } }
This post has been edited by custurd122000: 02 May 2022 - 02:09 PM
#2
Re: Reading a text file for a graph
Posted 02 May 2022 - 02:08 PM
Your indexing starts at 0. So if there are 2 elements, your indices are 0 and 1.
#iii
Re: Reading a text file for a graph
Posted 02 May 2022 - 02:23 PM
Yes I merely seen that, thanks...I figured out the error now I just had a question on the next line in the file, I'm trying to read the next Line and each edge consists of two vertex identifiers separated past a comma. Each border is separated past a infinite. So I read the adjacent Line and then how would I get about adding it? Do I ignore the spaces or add information technology into the ArrayList?
while(inFile.hasNext()) { line=inFile.nextLine(); String[] data2=line.separate("[\\, ]"); //list.add() }
#4
Re: Reading a text file for a graph
Posted 02 May 2022 - 02:24 PM
I'd probably split() the line on whitespace. Then you have edge pairs in each array element. It should exist fairly straight-forward to parse a String of length three.
#5
Re: Reading a text file for a graph
Posted 02 May 2022 - 02:44 PM
I was over thinking it, I just counted the number of commas in the next line and that gives me how many edges are in that location, I may have more than questions soon thank you for the assist
This postal service has been edited by custurd122000: 02 May 2022 - 02:58 PM
#half-dozen
Re: Reading a text file for a graph
Posted 02 May 2022 - 03:53 PM
Okay I take a question, if I want to print the first vertex before the comma and and then the second vertex afterwards the comma, how would I go about doing that? I know there's 14 vertices, then perchance a for loop? Then an index? I'yard not exactly certain.
#7
Re: Reading a text file for a graph
Posted 02 May 2022 - 04:14 PM
Information technology sounds similar you lot only want to iterate over the tokens array later on y'all split() the line with the edges.
#8
Re: Reading a text file for a graph
Posted 02 May 2022 - 04:22 PM
I did it ! Thank you, okay i more question I need to print out the in degree and out degree so if this is the lawmaking for printing out the vertices then j is the start vertex and i is the 2nd and so similar 0,2 is the first,
So vertices out degree 0 goes to 2 and in degree is 2 goes to 0 correct? How would I implement that?
String[] data2=line.divide("[\\:]"); Cord[][] vertices = new Cord[ data2.length ][]; for (int i = 0; i < data2.length; i++){ vertices[i] = data2[i].separate("[ ]"); } System.out.println("Graph: "); for (int j = 0; j < vertices.length; j++){ for (int i = 0; i < vertices[j].length; i++){ System.out.print("Alphabetize "+i+": "+vertices[j][i]+" \northward"); } System.out.print("\n"); }
This post has been edited past custurd122000: 02 May 2022 - 04:31 PM
#9
Re: Reading a text file for a graph
Posted 02 May 2022 - 05:28 PM
Anyone?
#10
Re: Reading a text file for a graph
Posted 02 May 2022 - 06:17 PM
Delight avoid needlessly bumping your thread. You posted roughly an hour and a half ago.
The degree of a vertex is the number of edges incident to said vertex. The in-degree deals with the number of incoming arcs on a vertex, and the out-caste is the number of outgoing arcs on said vertex. So with this definition in mind, give it a endeavour.
#11
Re: Reading a text file for a graph
Posted 03 May 2022 - 10:32 AM
I have a few problems with my lawmaking...for the adjLists its supposed to calculate the order of the graph which is the beginning line in the file only it prints
[LVertex;@b988a6
Also getting the following error:
coffee.lang.ArrayIndexOutOfBoundsException: -1
at Graph.<init>(Graph.coffee:58)
at Graph.main(Graph.coffee:94)
"graphs.txt"
6,ane
0,2 0,4 one,four 1,5 2,1 2,iii 2,five 3,two 3,4 four,one 4,5 5,i v,3 five,two
import coffee.io.File; import coffee.io.FileNotFoundException; import java.io.IOException; import java.util.Scanner; class Neighbor { public int vertexNum; public Neighbor next; public Neighbor(int vnum, Neighbour nbr) { this.vertexNum = vnum; next = nbr; } } class Vertex { String name; Neighbor adjList; Vertex(String name, Neighbor neighbors) { this.proper name = name; this.adjList = neighbors; } } public class Graph { Vertex[] adjLists; public Graph(Cord file) throws FileNotFoundException { Scanner sc = new Scanner(new File("graphs.txt")); String line = sc.nextLine(); Cord[] data=line.split("[\\,]"); adjLists=new Vertex[Integer.parseInt(information[0])]; int graphType=Integer.parseInt(data[1]); System.out.println("The order of the graph = " + adjLists); // read edges while (sc.hasNext()) { // read vertex names and translate to vertex numbers int v1 = indexForName(sc.next()); int v2 = indexForName(sc.next()); // add v2 to forepart of v1's adjacency list and // add v1 to forepart of v2's adjacency list adjLists[v1].adjList = new Neighbor(v2, adjLists[v1].adjList); adjLists[v2].adjList = new Neighbor(v1, adjLists[v2].adjList); } } int indexForName(String proper name) { for (int v=0; v < adjLists.length; five++) { if (adjLists[v].name.equals(name)) { return five; } } return -1; } public void impress() { Organisation.out.println(); for (int five=0; v < adjLists.length; v++) { System.out.print(adjLists[v].proper name); for (Neighbor nbr=adjLists[v].adjList; nbr != null;nbr=nbr.next) { System.out.print(" --> " + adjLists[nbr.vertexNum].name); } Organisation.out.println("\north"); } } /** * @param args */ public static void principal(String[] args) throws IOException { // TODO Auto-generated method stub Scanner sc = new Scanner(new File("graphs.txt")); String file = sc.nextLine(); Graph graph = new Graph(file); graph.print(); } }
#12
Re: Reading a text file for a graph
Posted 03 May 2022 - x:47 AM
Quote
Graph graph = new Graph(file);
Your code is confusing. Why do you laissez passer 'something' to the ctor of Graph and and then proceed to ignore information technology in that ctor?
#13
Re: Reading a text file for a graph
Posted 03 May 2022 - 02:35 PM
Please avert duplicate posting. Duplicate threads merged.
Source: https://www.dreamincode.net/forums/topic/346184-reading-a-text-file-for-a-graph/
Comments
Post a Comment