显示数字,转换数字,然后显示结果作为特殊字符VB.Net中的数量

时间:2012-11-23 03:49:01

标签: vb.net .net-4.0

大家好:我在VB.Net上很绿,而且我很难理解转换数字的逻辑,然后将该数字转换成等于该数字的字符串。

示例:

     Input = 1; Output as string using * is: * (4 asterisks, and etc.)
     Input = 3; Output as string using # is: ### (and so on).  

教授给了我们这项任务,以便从用户那里获得销售额,然后显示一种带有信息的条形图。 * = 100美元。因此,600美元等于 ** 。我可以得到这些信息,但我对如何转换这个信息很感兴趣。希望我把这个清楚地说成一个好问题!这就是我正在做的事情......已经有了获取信息的循环:

' The variables
    Dim dblValueA, dblSales, dblTotal As Double
    Dim dblValueB As Double = 1
    Dim strInput, strChgVal As String
    Dim strSymbol As String = "*"
    Dim strOutput As String
    ' get some input via a loop structure:
    Try


    For intCount As Integer = 1 to 5    ' Sales/Input for 5 Stores
    strInput = InputBox("place input here:")
        dblSales = CInt(strInput)
            dblTotal = dblSales
            dblValueA = (dblTotal/dblValueB)
            strChgVal = Cstr(dblValueA)
            strOutput = strChgVal
            strSymbol = strOutput

            lstOutput.Items.Add(dblValueA.ToString)

    Next
    Catch ex As Exception

    End Try

它有效,我只是迷失了如何将输出显示为实际的输入量。怎么做到这一点?

2 个答案:

答案 0 :(得分:1)

像这样:

strSymbol = New String("*"c, CInt(dblValueA))

答案 1 :(得分:0)

我非常喜欢使用字符串构造函数重载,如@David's answer中所述。但是,根据我的评论,我会添加这样的代码:

Public Function ToTextBars(ByVal input As Decimal, ByVal marginalValue As Decimal, ByVal BarCharacter As Char) As String
    'Always use a Decimal, not Double or Integer, when working with money

    Return New String(BarCharacter, CInt(CDec(dblValueA)/marginalValue))
End Function

它仍然是单行的:)然后像这样称呼它:

Console.WriteLine(ToTextBars(600d, 100d, "*"c))

或者像这样:

Dim result As String = ToTextBars(3d, 1d, "#"c)

结果将是:

******

但是,我怀疑在这里写一个循环是作业目标的一部分。使用字符串重载会忽略这一点。在那种情况下,我会这样写:

Public Function ToTextBars(ByVal input As Decimal, ByVal marginalValue As Decimal, ByVal BarCharacter As Char) As String
    If input < 0 Then input *= -1
    Dim charCount As Integer = 0

    While input > 0
         charCount += 1
         input -= marginalValue            
    End While

    Return New String(BarCharacter, charCount)
End While

您可以像第一个一样调用此函数。这仍然使用字符串构造函数重载,但它不会避免我希望你的教授想要你编写的循环。

这里还有一点风格。您从哪里获取strdbl前缀习惯?你的教授教你这个吗?这曾经在vb6时代流行,而它的前身是在.Net之前。现在,这不再被认为是有用的,微软自己的风格指南特别建议不要使用这些前缀。如果他不相信你,请将你的教授指向这个链接:

  

http://msdn.microsoft.com/en-us/library/ms229045.aspx