SUN
SUN

Reputation: 973

Convert numerical amount to words in vb.net showing Type Expected error

I am trying to convert numeric numbers to words in vb.net. But somewhere I am getting Type Expected error. Below is my entire code. I am also putting code separately where this error is coming.

Public Shared Function ConvertNumbertoWords(number As Integer) As String
    If number = 0 Then
        Return "ZERO"
    End If
    If number < 0 Then
        Return Convert.ToString("minus ") & ConvertNumbertoWords(Math.Abs(number))
    End If
    Dim words As String = ""
    If (number / 1000000) > 0 Then
        words += ConvertNumbertoWords(number / 1000000) & Convert.ToString(" MILLION ")
        number = number Mod 1000000
    End If
    If (number / 1000) > 0 Then
        words += ConvertNumbertoWords(number / 1000) & Convert.ToString(" THOUSAND ")
        number = number Mod 1000
    End If
    If (number / 100) > 0 Then
        words += ConvertNumbertoWords(number / 100) & Convert.ToString(" HUNDRED ")
        number = number Mod 100
    End If
    If number > 0 Then
        If words <> "" Then
            words += "AND "
        End If
        Dim unitsMap = New () {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE",
            "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN",
            "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN",
            "EIGHTEEN", "NINETEEN"}
        Dim tensMap = New () {"ZERO", "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY",
            "SIXTY", "SEVENTY", "EIGHTY", "NINETY"}

        If number < 20 Then
            words += unitsMap(number)
        Else
            words += tensMap(number / 10)
            If (number Mod 10) > 0 Then
                words += " " + unitsMap(number Mod 10)
            End If
        End If
    End If
    Return words
End Function

In below line I am getting Type Expected error

Dim unitsMap = New () {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE",
                "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN",
                "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN",
                "EIGHTEEN", "NINETEEN"}
            Dim tensMap = New () {"ZERO", "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY",
                "SIXTY", "SEVENTY", "EIGHTY", "NINETY"}

Upvotes: 0

Views: 861

Answers (2)

Patrick
Patrick

Reputation: 196

Even though number is an integer, number / 1000000 returns a double with the value .003256 (when number is 3256), which is > 0

For integer division, use \

If (number \ 1000000) > 0 Then

floating-point division operator

integer division operator

Note: number is the name if the variable in the OP. “The” number is not better formatting.

Upvotes: 0

akhil kumar
akhil kumar

Reputation: 1618

You are getting this error because you are not specifying the type of array you are about to declare.i got no error when i tried with this

  Dim unitsMap  = New string() {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN","EIGHTEEN", "NINETEEN"}

hope this helps.

Upvotes: 0

Related Questions