0

プログラムを実行しようとするたびに、次のようなエラーが表示され続けます

「文字列「59 60 65 75」から「Double」型への変換は無効です。」

整数 59、60、65、75 を保持する score.txt というファイルからデータを取得しています。この問題を修正する方法がよくわかりません。無限よりも(明らかにそうです)、ソースタイプが宛先タイプに変換可能であることを確認してください(これはデバッグ方法がわかりません)何か提案はありますか?これが私のコードです

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnanalyze.Click


        Dim scores() As String =
            IO.File.ReadAllLines("scores.txt")
        Dim intdata(scores.length - 1) As Double 'declare an array of type double to store the data of text file

        Dim mean As Double
        Dim sdeviation As Double = 0
        For i As Integer = 0 To scores.length - 1
            intdata(i) = CDbl(scores(i))

        Next
        mean = intdata.Average 'mean is the average of the numbers in the collection
        For j As Integer = 0 To intdata.Length - 1
            sdeviation = +Math.Pow(intdata(j) - mean, 2)

        Next
        sdeviation = sdeviation / (intdata.Length)
        sdeviation = Math.Sqrt(sdeviation)
        lblmean.text = FormatNumber(mean)
        lblsd.text = FormatNumber(sdeviation)
        lblnumofexams.text = scores.length
        Dim query = From score In scores
                    Let Sscore = score
                    Let grade = getGrade(score, mean, sdeviation)
                    Select Sscore, grade
        dvgoutput.datasource = query.tolist
        dvgoutput.currentcell = Nothing
        dvgoutput.columns("Sscore").headertext = "score"
        dvgoutput.columns("grade").headertext = "grade"




    End Sub
    Public Function getGrade(ByVal ES, ByVal m, ByVal s) As String
        If ES >= m + (1.5 * s) Then
            Return "A"
        End If
        If m + (0.5 * s) < +ES And ES < m + (1.5 * s) Then
            Return "B"
        End If

        If m - (0.5 * s) <= ES And ES < m + (0.5 * s) Then
            Return "C"
        End If

        If m - (1.5 * s) <= ES And ES < +m - (0.5 * s) Then
            Return "D"
        End If

        If ES < m - (1.5 * s) Then
            Return "F"
        End If
        Return ""
    End Function

End Class
4

1 に答える 1

0

テキスト ファイルには、1 行に 1 つのスコアが必要です。

于 2013-08-02T01:58:09.230 に答える