を使用してFormatExceptionをスローするの平均値の配列を取得する予定です。2D配列の列の合計を取得するが、常にC#
FormatExceptionのため、私のアプリはsum[j] += int.Parse(csvArray[i,j]);
でクラッシュします。私はConvert.ToDoubleとDouble.Parseを使用しようとしましたが、それでもその例外はスローされます。 CSVアレイのためRow 0 and Column 0
でfor loop
開始に
増分はストリング(名称及びタイムスタンプ)です。 divisor
またはtotal count of the fields that have values per column
については、not BLANK
のフィールドしかカウントしないため、IFという文がカウントされます。私は例外を処理する際に助けが必要だと思います。
以下は平均を得る方法の私の存在です。
public void getColumnAverages(string filePath)
{
int col = colCount(filePath);
int row = rowCount(filePath);
string[,] csvArray = csvToArray(filePath);
int[] count = new int[col];
int[] sum = new int[col];
double[] average = new double[col];
for (int i = 1; i < row; i++)
{
for (int j = 1; j < col; j++)
{
if (csvArray[i,j] != " ")
{
sum[j] += int.Parse(csvArray[i,j]);
count[j]++;
}
}
}
for (int i = 0; i < average.Length; i++)
{
average[i] = (sum[i] + 0.0)/count[i];
}
foreach(double d in average)
{
System.Diagnostics.Debug.Write(d);
}
}
}
私はプロトタイプをテストするとき私が使用CSV fileをアップロードしています。一部の列にはBLANK
という値があります。私の存在だったIF文はそのようなケースを扱うことができませんか?
また、1.324556-e09
のようなエントリがあります。私はcsvToArray(filePath)
方法でそれをトリミングしなければならないか、または他の効率的な方法がありますか?感謝万円!
だから 'csvArray [I、J]'それが失敗した時点での値は何ですか? – musefan
その文字列を整数として解析できなかったため、csvArrayによってcsvToArrayによって生成されたサンプルデータを含めてください –
'if(!string.IsNullOrWhitespace(csvArray [i、j]))'で空白をチェックすることもお勧めします。あなたは 'int.TryParse'を使用して、有効な数字ではない場合に処理することができます – musefan