无法理解为什么我的变量不会改变

时间:2013-09-12 22:47:45

标签: vb.net

我正在建设一点时间> VB中的付费转换程序。我是VB的新手,不明白为什么我的可变薪酬不能像它应该那样计算。我插入5 5作为测试并获得$ 0.

Dim total As Double = 0.0
Dim timeCounter As Integer = 0
Dim time As Integer = 0
Dim pay As Double = 0.0

While timeList.Items.Count < 5
    time = timeList.Items(timeCounter)
    total += time
    timeCounter += 1
End While

If total >= 0 And total <= 40 Then
    If total >= 0 And total <= 20 Then
        pay = total * 10
    ElseIf total >= 21 And total <= 30 Then
        pay = total * 12
    ElseIf total >= 31 And total <= 40 Then
        pay = total * 15
    Else
        PayLabel.Text = "Error"
    End If
End If

PayLabel.Text = "$" & pay

3 个答案:

答案 0 :(得分:2)

您的语法应该是这样的:

For intCount = 0 To timeList.Items.Count
    time = timeList.Items(intCount)
    total += time
Next intCount

这将避免无限循环。

修复您的40多个问题:

If total >= 0 And total <= 40 Then
    If total >= 0 And total <= 20 Then
        pay = total * 10
    ElseIf total >= 21 And total <= 30 Then
        pay = total * 12
    ElseIf total >= 31 And total <= 40 Then
        pay = total * 15
    End If
Else
    PayLabel.Text = "Error"            
End If

答案 1 :(得分:1)

这将是我对控制台应用程序的修复

for process将返回$ 0,第二个$ 100

Module Module1

Sub Main()
    Dim timeList As New List(Of Integer)

    timeList.AddRange(New Integer() {1, 2, 3, 4, 5, 6})
    process(timeList)
    timeList.Clear()
    timeList.AddRange(New Integer() {1, 2, 3, 4})
    process(timeList)

    Console.Read()


End Sub

Private Sub process(timeList As List(Of Integer))
    Dim total As Double = 0.0
    Dim timeCounter As Integer = 0
    Dim time As Integer = 0
    Dim pay As Double = 0.0
    While timeList.Count < 5 AndAlso timeCounter < timeList.Count
        time = timeList(timeCounter)
        total += time
        timeCounter += 1
    End While

    If total >= 0 And total <= 40 Then
        If total >= 0 And total <= 20 Then
            pay = total * 10
        ElseIf total >= 21 And total <= 30 Then
            pay = total * 12
        ElseIf total >= 31 And total <= 40 Then
            pay = total * 15
        Else
            Console.WriteLine("error")
        End If
    End If

    Console.WriteLine("$" & pay)
End Sub

End Module

答案 2 :(得分:0)

使用功能方法可以更好地解决这个问题。要获得整数列表的总和,请执行以下操作:

Dim totalTime = timeList.Sum()

然后你可以按照你布置的逻辑。我强烈建议学习使用Linq Set Functions来使您的代码易读且易于理解。祝你好运。