В результате я столкнулся с проблемой при добавлении размеров переменных массивов. Цикл работает один раз, а затем по существу. Но мне любопытно, что может вызвать такое поведение? Разве я не совсем понимаю, как вызывается функция выхода цикла?Динамически изменяемые размеры массивов
Вот код:
Module Module1
Sub Main()
Dim num(-1)
Dim i = 0
Console.WriteLine("Input numbers to be added, q to stop:")
Dim input
Dim total = 0
Do
ReDim Preserve num(UBound(num) + 1) : num(UBound(num)) = i 'resize the array each time before an element is added.
input = Console.ReadLine
If IsNumeric(input) Then 'attempt to break loop on non numeric input
num(i) = CInt(input)
i += 1
Else
Exit Do
End If
Loop
total = 0
For Each n In num
total += n
Next
Console.WriteLine(Join(num))
Console.WriteLine("Total: " & total)
Console.ReadLine()
Для ввода: 1 2 3 4 5 q
, выход я получаю:
1 2 3 4 5 5 Total: 20
Он добавляет последний элемент дважды, который интересен, поскольку он не только работает в два раза но каким-то образом используя последний числовой ввод, хотя конечный ввод не был числовым. Кто-нибудь знает, почему это было бы?
Пара вопросов - 1) Ваш скрипт не похож на правильный VBScript. Вы уверены, что используете правильный язык? 2) Почему вы назначаете 'num', когда вы его отменяете? –
1) Может быть? Я просто просматриваю учебник, и я просто пытаюсь понять, что могу и чего не могу. 2) Я хотел посмотреть, можно ли было переделать, ничего не сломав. – jnb92