0

次の行を含む入力ファイルを読み取るプログラムを作成しています。

Scott Atchison,200,74

このファイルには、約 30 行の異なるデータが含まれています。ファイルを読み込む方法を知っています。ファイルが読み込まれた後、分割され、計算を行う必要があります (その方法は知っています)。ただし、問題は出力ファイルです。入力ファイルの最後の行しか出力ファイルに取得できません。これは私が今持っているものです:

Public Class BMI
Dim data As String
Dim strName As String
Dim intWeight As Integer
Dim intHeight As Integer
Dim decBMI As Decimal


Private Sub btnInputFile_Click(sender As System.Object, e As System.EventArgs) Handles btnOpenFile.Click

    'User chooses a file
    OpenFile.ShowDialog()

    'Choose a file name into a label
    lblFileInput.Text = OpenFile.FileName


    Dim inputFile As New IO.StreamReader(lblFileInput.Text)


    Do While (inputFile.Peek() > -1)
        data = inputFile.ReadLine

        Dim fields() As String = data.Split(",")

        strName = fields(0)
        intWeight = fields(1)
        intHeight = fields(2)

        txtData.Text = txtData.Text & data & vbNewLine

    Loop
    FileClose()


End Sub


Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btnSaveFile.Click
    SaveFile.ShowDialog()
    lblFileOutput.Text = SaveFile.FileName

    Dim output As IO.StreamWriter

    output = New IO.StreamWriter(lblFileOutput.Text)

    output.WriteLine(data)



End Sub

Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    decBMI = (intWeight * 703 / (intHeight ^ 2))
    data = strName & ", " & decBMI
End Sub

クラス終了

30 行すべてが読み取られるまで 1 行書き込みませんか、それとも while ループのように何か不足していますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

すべての変数の宣言を含む、適切で実行可能なコードのスニペットを提供していただければ幸いです。たとえば、「データ」はどこに定義されていますか。コードの両方のチャンクの間の関係は何ですか? 彼らは同じ手順にいますか?

私が最初に気付くのは、各行「データ」をフィールドに分割し、それらを変数に保存していることです。これは無視するだけです。次に、テキスト ボックスに「データ」を追加します。

「データ」がコードの2つのチャンク間で共有されていると仮定すると、問題の理由は、ストリームライターに書き込まれる値が「データ」の最後の値であり、たまたま最後に読み込まれた行になることです。

于 2013-04-25T23:56:18.137 に答える