tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1296
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    katis09 katis09 ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    1
    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.
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    
    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
    Geändert von Maik (20.05.09 um 20:39 Uhr) Grund: Quellcode in Syntax-Highlighter gepackt
     

  2. #2
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    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?
     
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  3. #3
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Zitat Zitat von katis09 Beitrag anzeigen
    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:
    Code java:
    1
    2
    3
    4
    
    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
     

Ähnliche Themen

  1. Graph plotten
    Von xkris im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 04.10.07, 12:47
  2. graph.vpi
    Von dsjfans im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 07.03.05, 19:15
  3. MS Graph
    Von Nici im Forum ASP
    Antworten: 0
    Letzter Beitrag: 01.12.04, 12:45
  4. [MX/PHP] Graph
    Von zoku2020 im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 18.02.04, 16:16
  5. graph zeichnen
    Von GeorgMeyer im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 31.01.02, 13:25