Hallo zusammen,
ich schreibe gerade an meiner Bachelorarbeit in Graphentheorie und muss dazu einen großen Graphen in Java einlesen, wobei die Kanten in einem text Dokument gespeichert sind.
Dabei ist jede Zeile eine Kante, die erste Zahl der Startknoten, die zweite Zahl der Zielknoten und Zahlen 3 und 4 sind Kosten bzw Kapazität der Kante. Mein Dokument sieht also so aus:
(UTF8 kodiert)
Ich habe das Problem mit der Scanner Klasse gelöst, indem ich zuerst jede Zeile in einen String einlese und dann von dem String in 4 Variablen einlese. Allerdings bekomme ich beim lesen des Strings immer eine InputMismatchException.
Ich wäre sehr dankbar, wenn jemandem dazu etwas einfällt oder den Code verbessern kann!
Vielen Dank!
ich schreibe gerade an meiner Bachelorarbeit in Graphentheorie und muss dazu einen großen Graphen in Java einlesen, wobei die Kanten in einem text Dokument gespeichert sind.
Dabei ist jede Zeile eine Kante, die erste Zahl der Startknoten, die zweite Zahl der Zielknoten und Zahlen 3 und 4 sind Kosten bzw Kapazität der Kante. Mein Dokument sieht also so aus:
Code:
116 (Anzahl Knoten)
174 (Anzahl Kanten)
1 2 72 3 \n
2 3 15 98 \n
4 7 66 49 \n
5 6 39 48 \n
6 9 87 97 \n
8 13 31 5 \n
Ich habe das Problem mit der Scanner Klasse gelöst, indem ich zuerst jede Zeile in einen String einlese und dann von dem String in 4 Variablen einlese. Allerdings bekomme ich beim lesen des Strings immer eine InputMismatchException.
Java:
Graph graph = new Graph(false);
File f = new File("Filepath");
Scanner in = new Scanner(f);
int numberVertices = in.nextInt();
int numberEdges = in.nextInt();
for (int i=1; i<=numberVertices;i++)
{
Vertex vertex = new Vertex(i);
graph.addVertex(vertex);
}
while (in.hasNextLine())
{
for (int i =1; i<= numberEdges; i++)
{
String s = in.nextLine();
Scanner inscan = new Scanner(s);
while (inscan.hasNext())
{
int source = inscan.nextInt();
int sink = inscan.nextInt();
double cost =inscan.nextDouble();
double capacity = inscan.nextDouble();
Vertex Source = new Vertex(source);
Vertex Sink = new Vertex(sink);
Edge edge = new Edge(Source,Sink, cost, capacity);
graph.addEdge(edge);
}
inscan.close();
}
}
in.close();
Ich wäre sehr dankbar, wenn jemandem dazu etwas einfällt oder den Code verbessern kann!
Vielen Dank!