Snowflake
Snowflake

Reputation: 115

Visual Basic invalid cast runtime error

I'm new at Visual Basic, doing an assignment right now. This is the code I have

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

At runtime I can input all data no problem, but then I get an error that I can roughly translate to "invalid cast of the string "Quantity : " to type 'Double'. I'm not so sure what is going on, would appreciate pointers.

Upvotes: 0

Views: 148

Answers (2)

user4376581
user4376581

Reputation:

to avoid this problem you can use

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

Or you can use

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

Upvotes: 2

Green Fire
Green Fire

Reputation: 709

I fixed your code, this should work :

 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

Upvotes: -1

Related Questions