我有FormatException问题。这是代码。如何更改此代码来编译这段代码?
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 :(得分:2)
当参数的格式为时,抛出The exception 无效,或者复合格式字符串格式不正确。
在您的情况下,它被抛出,因为dataX[i].ToString()
和/或dataY[i].ToString()
无法转换为浮点值(可能是null
,Empty
,或者数字以外的字符)。因此,您可以使用TryParse
检查转换状态,并仅在转换正常时创建对象。请尝试以下代码:
float xValue, yValue;
for (int i = 0; i < dataX.Count; i++)
{
if (float.TryParse(dataX[i].ToString(),out xValue) && float.TryParse(dataY[i].ToString(),out yValue))
{
nizTacaka[i] = new Tacka(xValue, yValue);
}
else
{
Console.WriteLine("Conversion failed");
}
}