【问题标题】:Visual basic - beginning program codeVisual basic - 开始程序代码
【发布时间】:2015-10-03 06:39:09
【问题描述】:

对于包 A,我的输出始终为 14.95。其他一切似乎都运行良好。

对于我需要的程序:

互联网服务提供商向其客户提供 3 个订阅套餐,并为非营利组织提供折扣

  • packaga A:10 小时访问,每月 9.95 美元。额外费用为每小时 2.00 美元。
  • 套餐 B:20 小时访问,每月 14.95 美元。额外费用为每人 1.00 美元
  • 套餐 C:每月 19.95 美元无限制访问
  • 非营利组织:如果用户选择非营利组织复选框 a 20 应从最终费用中扣除 % 折扣。 输入验证”:一个月内使用的小时数不能超过 744 时的数字。该值必须是数字

btnCalc_Click

    Public Class Form1
    Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
        'Declare variables and constant

        Dim decTotal As Decimal
        Dim intHours As Integer
        Const decNonProfit As Decimal = 0.8D
     Try

            intHours = CInt(txtHoursUsed.Text)

            If CInt(txtHoursUsed.Text) > 744 Then
                MessageBox.Show("Monthly Hours Can't Exceed 744")
                txtHoursUsed.Text = String.Empty
                lblTotalDue.Text = String.Empty
            End If

            'Calculate A Package Total without discount
            If radPackageA.Checked = True And intHours > 10 Then
                decTotal = (9.95 + ((intHours - 10) * 2))
            ElseIf intHours <= 10 Then
                decTotal = 9.95
            End If

            'Calculate B Package Total without discount
            If radPackageB.Checked = True And intHours > 20 Then
                decTotal = (14.95 + ((intHours - 20) * 1))
            ElseIf intHours <= 20 Then
                decTotal = 14.95
            End If

            'Calculate C Package Total without discount
            If radPackageC.Checked = True Then
                decTotal = 19.95
            End If

            'Calculate Total for packages if Nonprofit is checked
            If chkNonProfit.Checked = True Then
                decTotal = decTotal * decNonProfit

            End If

            'Show total due
            lblTotalDue.Text = decTotal.ToString("c")

        Catch ex As Exception
            MessageBox.Show("Input Error")

        End Try

    End Sub

btnClear_Click

    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
        radPackageA.Checked = False
        radPackageB.Checked = False
        radPackageC.Checked = False
        chkNonProfit.Checked = False
        lblTotalDue.Text = String.Empty
        txtHoursUsed.Text = String.Empty
    End Sub

btnExit_Click

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub

    End Class

【问题讨论】:

  • 问题是……?
  • 我没有发现您的代码有任何问题。会不会是你将包 A 命名为 radPackageB 和包 B radPackageA
  • Package A 输出不能正常工作..ex。如果检查包 A 并且我输入 5 小时输出是 14.95 而不是 9.95..如果我在文本框中输入 20,它会给出 14.95.. 它给所有的 14.95。所有其他包输入/输出都在工作。
  • 向我们展示您的前端代码
  • 发生的情况是,当未检查 radPackageB 时,它将 decTotal 设置为 14.95。看我的回答。

标签: vb.net


【解决方案1】:

您需要在选择检查中包含整个条件。发生的事情是,当 repackageB.Checked 为假时,您的错误条件始终在运行。

            'Calculate A Package Total without discount
            If radPackageA.Checked Then
                If intHours > 10 Then
                    decTotal = (9.95 + ((intHours - 10) * 2))
                ElseIf intHours <= 10 Then
                    decTotal = 9.95
                End If
            End If

            'Calculate B Package Total without discount
            If radPackageB.Checked Then
                If intHours > 20 Then
                    decTotal = (14.95 + ((intHours - 20) * 1))
                ElseIf intHours <= 20 Then
                    decTotal = 14.95
                End If
            End If

            'Calculate C Package Total without discount
            If radPackageC.Checked Then
                decTotal = 19.95
            End If

【讨论】:

    【解决方案2】:

    您使用ElseIf 以错误的方式划分条件。 按照您的代码,您每次都会得到dectTotal = 14.95 radPackageB.Checked = FalseintHours &lt;= 20

    应该是这样的:

            If radPackageB.Checked Then
                If intHours > 20 Then
                    decTotal = (14.95 + ((intHours - 20) * 1))
                ElseIf intHours <= 20 Then
                    decTotal = 14.95
                End If
            End If
    

    所以请随意接受马克的回答

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多