0

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

例子:

     输入 = 1;使用 * 输出为字符串是:*(4 个星号等)
     输入 = 3; 使用 # 输出为字符串是:###(等等)。  

教授给我们这个任务是从用户那里获取销售额,然后显示一种带有信息的条形图。* = 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

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

4

2 回答 2

1

像这样:

strSymbol = New String("*"c, CInt(dblValueA))
于 2012-11-27T21:38:54.227 回答
0

我真的很喜欢使用字符串构造函数重载,正如@David的回答中所建议的那样。但是,根据我的评论,我将添加如下代码:

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 之前的前辈。现在,这不再被认为是有用的,Microsoft 自己的样式指南特别建议不要使用这些前缀。如果您的教授不相信您,请将他指向此链接:

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

于 2012-11-27T21:57:30.447 回答