0
Public Class GPA_Form

Private Sub exitButton_Click(sender As System.Object, e As System.EventArgs) Handles exitButton.Click
    Me.Close()
End Sub

Private Sub entdatButton_Click(sender As System.Object, e As System.EventArgs) Handles entdatButton.Click
    Const Prompt As String = "Enter number of Credit Hours:"
    Const Title As String = "Credit Hours"
    Const Prompt2 As String = "Enter grades:"
    Const Title2 As String = "Grades"
    Dim inputCredit As String
    Dim inputGrades As String
    Dim creditHrs As Integer
    Dim grades As Char
    Dim gradesCounter As Integer
    Dim creditHrsAccumulator As Integer
    Dim point As Integer
    Dim gpaTot As Integer
    Dim pntAccumulator As Integer

    inputCredit = InputBox(Prompt, Title)
    inputGrades = InputBox(Prompt2, Title2)

    Do While inputCredit <> String.Empty
        Integer.TryParse(inputCredit, creditHrs)
        Char.TryParse(inputGrades, grades)

        gradesCounter += 1
        creditHrsAccumulator += creditHrs

        Select Case grades
            Case Is >= "A"
                point = 4
            Case Is >= "B"
                point = 3
            Case Is >= "C"
                point = 2
            Case Is >= "D"
                point = 1
            Case Is >= "F"
                point = 0
        End Select

        pntAccumulator += point

        gpaTot = pntAccumulator / gradesCounter

        tchData.Text = creditHrsAccumulator.ToString("N0")
        numGrEnt.Text = gradesCounter.ToString("N0")
        gpaData.Text = gpaTot.ToString("N2")

        inputCredit = InputBox(Prompt, Title)
        inputGrades = InputBox(Prompt2, Title2)

    Loop


End Sub
End Class

私はビジュアル ベーシックの初心者ですが、GPA の計算でどこが間違っているのかを知りたいです。そうでない場合は、もちろん、上記とは異なる方法で入力する必要があります。私が間違っていることについて誰かが私にヒントを与えることができれば、それは大歓迎です。

4

3 に答える 3

1

GPAの公式はそうではありませgpaTot = pntAccumulator / gradesCounter

gpaTot = 0
creditHrsAccumulator = 0

Do While inputCredit <> String.Empty
    Integer.TryParse(inputCredit, creditHrs)
    Char.TryParse(inputGrades, grades)

    Select Case grades
        Case "A"
            point = 4
        Case "B"
            point = 3
        Case "C"
            point = 2
        Case "D"
            point = 1
        Case "F"
            point = 0
    End Select

    gpaTot= (creditHrsAccumulator*gpaTot + point*creditHrs)/(creditHrsAccumulator + creditHrs)
    gradesCounter += 1
    creditHrsAccumulator += creditHrs

    ...

そして、あなたはを取り除くことができますpntAccumulator

于 2012-08-27T14:07:27.670 に答える
1

選択 ... ケースは、使用したものとは異なるフォーマットになっています。

成績が A > B > C であることは誰もが知っていますが、Visual Basic はそれを知りません。Visual Basic では、これらは単なる文字であり、比較することはできません。ステートメントはのCaseような比較演算子をサポートしておらず>=、それらは暗黙的==に であり、「Case Is」ではなく「Case」だけを記述します。これを試して:

Select Case grades
    Case "A"
        point = 4
    Case "B"
        point = 3
    Case "C"
        point = 2
    Case "D"
        point = 1
    Case "F"
        point = 0
End Select
于 2012-08-27T13:29:00.343 に答える
0

>= を使用できない文字列を比較する場合、成績が文字列以上かどうかを示しています。

<= pr >= は数値の比較でのみ機能します。

于 2014-11-24T20:51:04.987 に答える