vb.net - 问题将百分比转换为成绩 - 所有结果均显示为 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
解决方案
您应该做的第一件事是 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
推荐阅读
- sql - 是否可以将 order by 语句的排序显式保存在表中(SQL Server 版本 2017)
- bash - jq null unix时间戳解析问题
- r - 安装zoo包的问题,错误:sh:c:/Rtools/mingw_32/bin/gcc: No such file or directory
- vue.js - 在 ThreeJS 中删除 Mesh 对象的最佳实践?
- powershell - 循环中进程优先级的启动进程无法识别变量
- ggplot2 - 如何为ggplot2中两个不同数据帧的两个geom_points绘制两个不同的色标?
- angular - Angular CDK 覆盖模块:CanDeactivateGuard 应该启动自定义模式
- three.js - 缩放对象时非常奇怪的行为
- python - 使用递归计算列表中的元素总数
- php - Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1 no such table - In clone project