2012-09-17 35 views
-1

我在这里有一个问题,无法弄清楚我的代码出错了,所以我决定问你们。我做了一个运输成本的vb.net 程序,它会根据总价计算它。问题是如果我输入让我们说,1000.34, 它给了我一个零运费,当它应该给我14美元。我在这里错过了一些非常简单的东西,有 没有语法错误。vb.net调试价格

谢谢。

Dim totPrice As Decimal 
Dim Ship As Integer 

Decimal.TryParse(txtTot.Text, totPrice) 

Select Case totPrice 
    Case Is <= 1.0 
     Ship = 0 
    Case 1 To 100 
     Ship = 2 
    Case 50 To 450 
     Ship = 12 
    Case 301 To 1000 
     Ship = 14 
    Case Is >= 1001 
     Ship = 16 
End Select 

lblshi.Text = Ship.ToString("C0") 
+3

除此之外,没有1000.34的情况。你似乎有一些重叠的时期。示例55的预期结果是什么? 2或12? – Magnus

回答

1

1000.34没有符合任何标准,因此它将返回默认的船舶值,因为您没有设置它为0。它大于1000,这就是为什么它没有将船舶设置为14但小于1001,这就是为什么它没有设置为16.

要纠正这个问题,你可以在301到1000的情况下,但你可能会遇到边缘情况。我想你可能会考虑切换到If语句,这样你就可以处理大于。

If totPrice <= 1 
    ' All of your other cases 
Else If totPrice >301 and totPrice<1001 
    'do work 
Else If totPrice >= 1001 

End If