Ungerichteter Graph

katis09

Grünschnabel
Hallo liebe Forummitglieder,

ich habe hier ein kleines Problem mit meinem Algorithmus:

ich will einen Graphen in eine Adjazenzmatrix abspeichern nur bekomme ich komische Fehlermeldungen.

Und weiß wirklich nicht wie ich diese beheben kann, denn die scheinen mir unlogisch.
Java:
import java.io.*;
import java.util.*;
import java.lang.*;

public class Graph {
	
	public static void main (String [] args){
		Graph test = new Graph();
		test.getGraph("input.txt");
	}

	public int n;  // Knotenanzahl
	public int m;  // Kantenanzahl
	static public int start, ziel;  // Startknoten, Zielknoten
	public int [][] matrix;
	
	public Graph (){}
	
	/* EINLESEN */
	public  int [][] getGraph (String datei){
		
		
		try {
		 	
	    	
			File input = new File(datei);
			FileReader in = new FileReader(input);
	        BufferedReader reader = new BufferedReader(in);
	        n = Integer.parseInt(reader.readLine()); // erste Zeile einlesen
	        m = Integer.parseInt(reader.readLine()); // zweite Zeile einlesen
	        start = Integer.parseInt(reader.readLine()); // Startknoten einlesen
	        ziel = Integer.parseInt(reader.readLine()); // Zielknoten einlesen
	       
	        matrix = new int [n][n]; // Bilde Adjazenzmatrix mit n Zeilen und n Spalten
	        	
	        	
	        	for (int k=0; k<n; k++){
	        		for (int l=0; l<n;l++){
	        				matrix[k][l]=0;
	        		 }
	        	} // Setze in dieser vorerst alle Einträge gleich Null
	        	
	        	for (int i = 0; i<=m; i++){
	        		
	        		 String s = reader.readLine();
	        		 String kante [] = s.split(":");
	        		 int k1= Integer.parseInt(kante[0]);
	        		 int k2 = Integer.parseInt(kante[1]);
	        		 int gewicht = Integer.parseInt(kante[2]);
	        		 
	        		 
	        		 //System.out.println(k1+""+k2+""+gewicht);
	        		 matrix [k1][k2] = gewicht;
	        		/matrix [k2][k1] = gewicht;
	        		 
	        		 
	        		 //System.out.println(matrix[k2][k1]);
	    	        		
	        	
	        }
	        	
	        	for (int j =0; j<n;j++){
	        		for (int i =0; i<n; i++){
	        			System.out.println( matrix [j][i]);
	        		}
	        	}
	        reader.close();
	       
	        
	 }  
	 
	 catch (IOException e){ System.out.println ("Fehler beim Einlesen der Datei oder Datei nicht gefunden");}
	 
	 catch (NullPointerException e){ System.out.println(" NullPointerException in Einlesen ohne Struktur");}
		
		return matrix;
	}
	
}

Die Datei zum einlesen hat folgende Form:

anzahl knoten
anzahl kanten
startknoten
zielknoten
gerichtete kante im format v1:v2: Gewicht

Wenn ich in der AdMatrix die gewichte setzen will sage ich matrix [v1][v2]= gewicht

aber mein algorithmus macht da probleme. gibt eine NumberFormatException zurück.

Bitte helft mir ich weiß sonst nicht wie ich das problem lösen kann
 
Zuletzt bearbeitet von einem Moderator:
Hi,
Kannst du vielleicht mal das ganze Fehlergeblubber, das die JVM auspuckt, posten? Außerdem wäre eine Beispieldatei ganz nett.
Ciao
DosCoder

PS: Was veranlasst dich dazu, deine Instanzvariablen mit public zu definieren? :(
 
Die Datei zum einlesen hat folgende Form:

anzahl knoten
anzahl kanten
startknoten
zielknoten
gerichtete kante im format v1:v2: Gewicht

Wenn ich in der AdMatrix die gewichte setzen will sage ich matrix [v1][v2]= gewicht

aber mein algorithmus macht da probleme. gibt eine NumberFormatException zurück.

Bitte helft mir ich weiß sonst nicht wie ich das problem lösen kann

Ich gehe davon aus das die NumberformatException beim parseInt() passiert.
Ich nehme an das in Deiner einzulesenden Datei führende oder folgende Leerzeichen existieren.
versuche es doch so:
Java:
n = Integer.parseInt(reader.readLine().trim()); // erste Zeile einlesen
m = Integer.parseInt(reader.readLine().trim()); // zweite Zeile einlesen
start = Integer.parseInt(reader.readLine().trim()); // Startknoten einlesen            
ziel = Integer.parseInt(reader.readLine().trim()); // Zielknoten einlesen
 
Zurück