【问题标题】:Display a Number, Convert Number, then Display Result as a quantity in special characters VB.Net显示一个数字,转换数字,然后将结果显示为特殊字符的数量 VB.Net
【发布时间】:2012-11-23 03:49:00
【问题描述】:

大家好:我是 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

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

【问题讨论】:

  • 我想我没有得到这个问题。如果* = 100 美元,那么 600 美元 = ******(6 星)而不是 **(2 星)。

标签: vb.net .net-4.0


【解决方案1】:

像这样:

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

【讨论】:

  • 我会在该表达式中添加一个 marginalValue 变量和一个 / marginalValue,以解决每 100 美元值一个 * 的问题,因此 600 美元看起来像 ***** *。否则这是完美的,+1
  • 是的。我在这里假设dblValueB 是为了达到这个目的,但可以肯定的是,越明确越好。
【解决方案2】:

我真的很喜欢使用字符串构造函数重载,正如@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 之前的前辈。现在,这不再被认为是有用的,Microsoft 自己的样式指南特别建议不要使用这些前缀。如果您的教授不相信您,请将他指向此链接:

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

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    相关资源
    最近更新 更多