Reputation: 973
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
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
Note: number is the name if the variable in the OP. “The” number is not better formatting.
Upvotes: 0
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