#vb.net
#vb.net
Вопрос:
Я новичок в программировании и пытаюсь разобраться в этом простом вопросе! Язык — Visual Basic! Вопрос ниже:
«Пользователям компьютерной программы часто нравится вводить числа с запятыми, вставленными посередине, например «1,234,000,688». Большинство компьютерных языков считают этот формат нечисловым. Напишите программу, которая вводит число, содержащее не более трех запятых, и выдает строку, содержащую то же число без запятых»
Когда я ввожу это число: 1,234,000,688 и нажимаю Отобразить в Visual Basic, я получаю это сообщение об ошибке -> Аргумент находится вне диапазона, исключение не обработано
Я не совсем уверен, почему это происходит, потому что я нахожусь в пределах моей длины strUserInput.
Мой код:
Public Class Form1
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
'Variable declarations
Dim strUserInput = txtUserInput.Text
Dim strOutputNumber1 As String
Dim strOutputNumber2 As String
Dim strOutputNumber3 As String
Dim strOutputNumber4 As String
' 1,234,000,688
strOutputNumber1 = strUserInput.Substring(0, 1)
strOutputNumber2 = strUserInput.Substring(2, 4)
strOutputNumber3 = strUserInput.Substring(5, 8)
strOutputNumber4 = strUserInput.Substring(9, 12)
lblDisplayNumber.Text = strOutputNumber1 amp; strOutputNumber2 amp; strOutputNumber3 amp; strOutputNumber4
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
lblDisplayNumber.Text = String.Empty
txtUserInput.Text = String.Empty
End Sub
End Class
Комментарии:
1. Вторым аргументом
Substring
является длина подстроки, а не конечная точка. Смотрите документацию здесь .2. Ваше решение также основывается на предположении, что запятые находятся в определенных заранее определенных местах во входной строке. Это не указано как часть вопроса.
Ответ №1:
Вы получаете это исключение из-за того, как вы используете substring , последний из них начинается с индекса 9 и содержит 12 символов…это было бы число из 22 символов, а текст, который вы вводите, вероятно, намного короче. Вам не нужно чрезмерно усложнять для себя использование подстрок, весь приведенный выше код можно значительно сжать и очистить, просто используя String.Замените следующим образом:
Public Class Form1
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
lblDisplayNumber.Text = txtUserInput.Text.Replace(",", "")
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
lblDisplayNumber.Text = String.Empty
txtUserInput.Text = String.Empty
End Sub
End Class