首页 > 解决方案 > 问题将百分比转换为成绩 - 所有结果均显示为 A

问题描述

这是一个非常简单的项目,由于某种原因,输出总是显示在 Case >= 85 下的结果,所以是 A。谁能帮我看看为什么?谢谢

Public Class frmMarkBook
    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click

        Dim intScore As Integer 'variable for the score entered

        Select Case intScore = CInt(txtScore.Text) 'converts score to an integer
            Case >= 85
                lblGradeResult.Text = ("A")
                txtGradeComment.Text = ("Excellent result")
            Case 70 To 84.99
                lblGradeResult.Text = ("B")
                txtGradeComment.Text = ("Very good result")
            Case 55 To 69.99
                lblGradeResult.Text = ("C")
                txtGradeComment.Text = ("Satisfactory result")
            Case 40 To 54.99
                lblGradeResult.Text = ("D")
                txtGradeComment.Text = ("Needs some improvements")
            Case 0 To 39.99
                lblGradeResult.Text = ("E")
                txtGradeComment.Text = ("Needs to repeat task")
            Case Else
                MessageBox.Show("Please enter a valid percentage")

        End Select

    End Sub

标签: vb.net

解决方案


您应该做的第一件事是 turn Option Strict On,无论是在项目属性中还是在 VS 选项中,因此On默认情况下它用于未来的项目。那会告诉您拒绝编译该代码没有意义。

这是错误的:

Select Case intScore = CInt(txtScore.Text)

在 C# 中,它会分配一个值intScore,然后评估该值,但在 VB 中,这是一个比较,而不是一个赋值。这相当于:

Dim bool As Boolean = (intScore = CInt(txtScore.Text))

Select Case bool

如果您想要分配,那么您必须实际执行分配,而不是比较:

intScore = CInt(txtScore.Text)

Select Case intScore

推荐阅读