[ad_1]
フォーマットの瞬間に少し問題があります。
与えられた例に正確に従いましたが、特定の行がエラーとして表示される理由をまだ見つけていません。 星との線は私が問題を抱えているものです。 System.FormatException が発生するだけです。 ありがとうございます!
float.Parse ステートメントが正しく実行されていないときに、私が読もうとしているドキュメントの 2 行を次に示します。
****クイックストップ|イクラ|31|24|
クイックストップ|ゴルゴンゾーラテリーノ|12.5|15|****
private void cmboboxlist_SelectedIndexChanged(object sender, EventArgs e) { string [] names = new string[10]; float[] subtotals = new float[10]; string [] fields; int index = 0; float subtotal; string frmStr, currentLine; StreamReader ReportReader = new StreamReader("PurchaseReport.txt"); lstboxdisplay.Items.Clear(); frmStr = "{0,-20}{1,10}{2,10}{3,20:N1}"; while (ReportReader.EndOfStream == false) { currentLine = ReportReader.ReadLine(); fields = currentLine.Split('|'); **** subtotal = float.Parse(fields[2]) + float.Parse(fields[3]); names[index] = fields[0]; subtotals[index] = subtotal; index = index + 1; lstboxdisplay.Items.Add(String.Format(frmStr, fields[0], fields[1], fields[2], fields[3], subtotal)); }
私が試したこと:
出力の形式を変更しようとしましたが、形式が正しくないと言い続けていますが、例として持っている別のドキュメントでは、この形式は正常に機能します。
解決策 1
fields[2]
および/または fields[3]
あなたがそうであると思うものではありません。 その行にブレークポイントを設定し、コードを実行します。 デバッガーがその行で停止したら、コンテンツを解析しようとしている各変数の上にマウスを置き、それらに何が含まれているかを確認します。
解決策 2
C#
**** subtotal = float.Parse(fields[2]) + float.Parse(fields[3]);
使用しないでください Parse
、データが正しくない場合にアプリケーションをクラッシュさせるだけです。 に変更します TryParse
:
C#
float temp = 0; if (!float.TryParse(fields[2], out temp) { // display a message showing the invalid data, and return from the method } subtotal = temp; if (!float.TryParse(fields[3], out temp) { // display a message showing the invalid data, and return from the method } subtotal += temp;
[ad_2]
コメント