プログラムを実行しようとするたびに、次のようなエラーが表示され続けます
「文字列「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