Похоже, что ваш TransmissionArray
не инициализирован должным образом. Если вы просто Dim
это нравится:
Dim TransmissionArray() As Double
Тогда это будет Nothing
. Если вы попытаетесь присвоить ему значение таким образом, вы получите исключение. Обычно вы можете вставить число в круглую скобку (Dim TransmissionArray(10) As Double
), и у вас будет массив длиной 10, который можно сразу начать присваивать значения. Но, если вы не знаете длину, прежде чем руки, я могу думать о двух вариантов, которые будут работать:
Dim TransmissionArray() As Double
For i As Integer = 10 To 100
ReDim Preserve TransmissionArray(i) 'This will increase the size of the array to the value of i, the Preserve keyword also saves the data already stored in the array
TransmissionArray(i) = (maxFirstArray(i) - mintranArray(i))/(maxSecondArray(i) - mintranArray(i))
'i = i + 1 'Commented this out...i is already incremented once each loop
Next
Или перейти к использованию List(Of Double)
:
Dim TransmissionArray As New List(Of Double)
For i As Integer = 10 To 100
TransmissionArray.Add((maxFirstArray(i) - mintranArray(i))/(maxSecondArray(i) - mintranArray(i)))
'i = i + 1 'Commented this out...i is already incremented once each loop
Next
Обратите внимание, что второй метод сделало бы TransmissionArray
10 предметов меньше, чем другие массивы, из-за того, что вы начинаете счетчик контуров For
в 10 и просто добавляете элементы в список.
Какая конкретная ошибка вы получаете, когда используете инструкцию 'Try ... Catch'? Проблема заключается не в том, что числа являются отрицательными или положительными при делении (если значение mintranArray (I) 'никогда не равно нулю). Похоже, что ваш 'TransmissionArray()' не инициализирован правильно. Не могли бы вы добавить строку, в которой вы объявляете массив? – RianBattle
Dim TransmissionArray() As Double. Я также объявлял другие массивы – Photoniker
Как отметил @RianBattle, функции математики отлично работают даже с отрицательными числами. Если '(maxSecondArray (i) - mintranArray (i)' равно нулю, ваше подразделение вернет 'Infinity'. Это не вызовет исключения и не будет попадаться в ваш блок Try/Catch, но это может вызвать проблемы позже on. – Blackwood