2016-07-14 10 views
-2

Ich habe FormatException Problem. Hier ist der Code. Wie kann ich dies ändern, um dieses Stück Code zu kompilieren?FormatException wurde unhandled float.Parse

private Tacka[] load() 
{ 
    ArrayList dataX = new ArrayList(); 
    ArrayList dataY = new ArrayList(); 

    var citac = new StreamReader(File.OpenRead(@"C:\Users\Marko\Documents\Visual Studio 2012\Projects\K-Means\s1.csv")); 
    var linija = citac.ReadLine(); 

    if (linija.StartsWith("%") || linija.StartsWith("@") || linija.StartsWith("/") || linija.Length == 0) 
    { 

    } 
    else 
    { 
     var values = linija.Split(' '); 
     dataX.Add(values[0]); 
     dataY.Add(values[1]); 
    } 
    Tacka[] nizTacaka = new Tacka[dataX.Count]; 
    //List<Tacka> tacka = new List<Tacka>(); 
    for (int i = 0; i < dataX.Count; i++) 
    { 
     //tacka.Add(new Tacka(float.Parse(dataX[i].ToString()), float.Parse(dataY[i].ToString()))); 
     nizTacaka[i] = new Tacka(float.Parse(dataX[i].ToString()), float.Parse(dataY[i].ToString())); 
    } 

    return nizTacaka; 
} 
+0

Es wäre hilfreich, wenn Sie die vollständige Ausnahme (einschließlich Stack-Trace) gebucht und genau angegeben, welche Codezeile die Ausnahme auslöst. Was sind die Werte der Variablen (d. H. "DataX [i]" und "dataY [i]") in der fehlerhaften Codezeile? –

+0

Ich hoffe, es war wegen 'float.Parse' nicht gelungen, die' dataX [i] .ToString() 'und/oder' dataY [i] .ToString() ' –

+0

Zeile: nizTacaka [i] = neue Tacka (float.Parse (dataX [i] .toString()), float.Parse (DatenY [i] .ToString())); – MTom

Antwort

2

The exception dass, wenn das Format eines Arguments geworfen wird ungültig ist, oder wenn eine zusammengesetzte Formatzeichenfolge nicht gut gebildet.

Hier in Ihrem Fall es geworfen wurde, weil entweder dataX[i].ToString() und/oder dataY[i].ToString() auf einen Float-Wert nicht konvertierbar ist (kann es null ist, Empty oder andere Zeichen als Zahl). So können Sie TryParse verwenden, um den Konvertierungsstatus zu überprüfen, und das Objekt nur erstellen, wenn die Konvertierung in Ordnung ist. Versuchen Sie den folgenden Code: