【问题标题】:VB Program not working, should be simpleVB程序不工作,应该很简单
【发布时间】:2014-11-18 11:50:31
【问题描述】:

这是一个家庭作业,据我所知,我已经完成了我应该做的所有事情。但是由于某种原因它不起作用。如果我输入“50000”作为物业价值,“.6”作为评估百分比,“.7”作为评估率,我应该得到“210 美元”的物业税,但我一直只得到零,不知道是什么我错过了。直到周日才到期,所以如果你只想给我一个提示,我也会很感激。我已经检查了几次说明和代码,但我仍然没有看到我的错误。我一直在看“propertytaxLabel.Text = CDec(decTax)”,就像我在那里也搞砸了一样。

Public Class Form1
Private Sub clearButton_Click(sender As Object, e As EventArgs) Handles clearButton.Click
    valueTextBox.Clear()
    percentTextBox.Clear()
    rateTextBox.Clear()
    propertytaxLabel.Text = ""
End Sub

Private Sub exitButton_Click(sender As Object, e As EventArgs) Handles exitButton.Click
    Me.Close()
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    Dim result As DialogResult
    result = MessageBox.Show("Are you sure?", "Exit", MessageBoxButtons.YesNo)
    If result = DialogResult.No Then
        e.Cancel = True
    End If
End Sub
Private Sub calculateButton_Click(sender As Object, e As EventArgs) Handles calculateButton.Click
    Try
        Dim decValue, decPercent, decRate, decTax As Decimal
        decValue = CDec(valueTextBox.Text)
        decPercent = CDec(percentTextBox.Text)
        decRate = CDec(rateTextBox.Text)

        propertytaxLabel.Text = CStr(decTax)

        If proceduresRadioButton.Checked = True Then
            TaxCalcProc(decValue, decPercent, decRate, decTax)
        Else
            decTax = TaxCalcFunc(decValue, decPercent, decRate)
        End If
        FormatCurrency(decTax)
    Catch ex As Exception
        MessageBox.Show("Error: Did you enter the data correctly?")
    End Try
End Sub
Private Sub TaxCalcProc(ByVal propVal As Decimal, ByVal perc As Decimal, ByVal rate As Decimal, ByRef tax As Decimal)
    Dim AssessedValue As Decimal
    Try
        AssessedValue = propVal * perc
        tax = AssessedValue / 100 * rate
        If rate > 1 Or perc > 1 Then
            Throw New Exception("Tax Greater Than Value. Did you use the decimal point?")
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
Private Function TaxCalcFunc(ByVal propVal As Decimal, ByVal perc As Decimal, ByVal rate As Decimal) As Decimal
    Dim tax As Decimal
    Dim AssessedValue As Decimal
    Try
        AssessedValue = propVal * perc
        tax = AssessedValue / 100 * rate
        If rate > 1 Or perc > 1 Then
            Throw New Exception("Tax Greater Than Value. Did you use the decimal point?")
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        Return 0
    End Try
    Return Tax
End Function

结束类

【问题讨论】:

  • 开启Option Strict,然后设置断点调试
  • 在您的代码隐藏中,右键单击出现错误的行并选择插入断点,然后使用工具栏运行程序
  • 没有什么给我一个错误,它只是没有做它应该做的事情。我想我在错误的地方放错了一块,但我找不到它
  • procedureRadioButton 是选中还是未选中?
  • 我有“如果程序RadioButton.Checked = True Then”

标签: vb.net


【解决方案1】:

您是在申报后将 decTax 打印到标签上,而不是在计算后。

尝试在按钮点击事件中将propertytaxLabel.Text = CStr(decTax) 移动到FormatCurrency(decTax) 之后。

【讨论】:

  • 就是这样,天哪。第二次我犯了这样的错误,正确的信息在错误的地方。非常感谢
  • 我很高兴它有帮助。我们都会犯这些错误,不要让任何人愚弄你。我已经这样做了 7 年,但我仍然不时制作它们。请将此标记为答案。
【解决方案2】:

我的 VB 生锈了,但是您没有任何机会尝试将“50,000”转换为数字,并且它失败了,因为它有一个逗号?大多数 string -> int 和 string -> float 转换(在其他语言中)不喜欢逗号。

【讨论】:

  • 刚刚检查,您的描述中有一个逗号。
【解决方案3】:

首先,您应该研究使用 Visual Studio 调试和设置断点。这将使解决这个问题变得非常容易。除此之外,您可以使用以下方法隔离和测试您的功能:

Private Sub calculateButton_Click(sender As Object, e As EventArgs) Handles calculateButton.Click
    Dim decTax As Decimal
    TaxCalcProc(50000D, 0.6D, 0.7D, decTax)
    Dim resultString = Format(decTax, "C")
    MessageBox.Show("decTax = " + resultString, "Test", MessageBoxButtons.Ok)
End Sub

另外,改变:

AssessedValue / 100 * rate

到:

AssessedValue / 100D * rate 

您可能无意中遇到Int 的情况,因为除以 100。100D 告诉编译器您需要一个十进制数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多