【问题标题】:Visual Basic invalid cast runtime errorVisual Basic 无效转换运行时错误
【发布时间】:2015-01-24 08:29:16
【问题描述】:

我是 Visual Basic 的新手,现在正在做作业。这是我的代码

Sub Main()
    Console.Write("Please let me know your nickname: ")
    Dim name As String = Console.ReadLine()
    Console.WriteLine("Thank you " + name + "!")
    Console.WriteLine()
    Console.Write("How many litres " + name + "<only whole litres please>? ")
    Dim litres As Integer = Console.ReadLine()
    Console.Write("Premium quality? <y/n>: ")
    Dim ans As Char = Console.ReadLine()
    Dim prem As Boolean
    If ans = "y" Then
        prem = True
    ElseIf ans = "n" Then
        prem = False
    End If

    Console.WriteLine()
    Console.WriteLine("WELCOME TO APU'S GAS STATION")
    Console.Write("Quality:     ")
    If prem = True Then
        Console.Write("Premium")
    Else : Console.Write("Regular")
    End If

    Dim price As Double = 12.44
    Console.WriteLine("Quantity <l>:    " + litres)
    Console.WriteLine("Price per l:     " + price)
    Console.WriteLine("Sum to pay: " + litres * price)

    Console.ReadLine()
End Sub

在运行时,我可以毫无问题地输入所有数据,但随后我收到一个错误,我可以粗略地将其翻译为“字符串“数量:”的无效转换以键入“双”。 我不太清楚发生了什么,希望指点。

【问题讨论】:

  • 将选项严格设置为on。使用&amp; 进行字符串连接。问题解决了。
  • 您不能将双精度加到字符串中,这是类型不匹配的,您可以使用 & 将双精度链接到字符串,只需将所有 + 替换为 &

标签: vb.net


【解决方案1】:

为了避免这个问题,你可以使用

Console.WriteLine("Quantity <l>:    " + litres.ToString)

或者你可以使用

Console.WriteLine("Quantity <l>:    " + CStr(price))

【讨论】:

    【解决方案2】:

    我修复了你的代码,这应该可以工作:

     Sub Main()
        Console.Write("Please let me know your nickname: ")
        Dim name As String = Console.ReadLine()
        Console.WriteLine("Thank you " & name & "!")
        Console.WriteLine()
        Console.Write("How many litres " & name & "<only whole litres please>? ")
        Dim litres As Integer = Console.ReadLine()
        Console.Write("Premium quality? <y/n>: ")
        Dim ans As Char = Console.ReadLine()
        Dim prem As Boolean
        If ans = "y" Then
            prem = True
        ElseIf ans = "n" Then
            prem = False
        End If
    
        Console.WriteLine()
        Console.WriteLine("WELCOME TO APU'S GAS STATION")
        Console.Write("Quality:     ")
        If prem = True Then
            Console.Write("Premium")
        Else : Console.Write("Regular")
        End If
    
        Dim price As Double = 12.44
        Console.WriteLine("Quantity <l>:    " & litres)
        Console.WriteLine("Price per l:     " & price)
        Console.WriteLine("Sum to pay: " & (litres * price))
        Console.ReadLine()
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2013-12-15
      相关资源
      最近更新 更多