x-ios Ответов: 1

Как использовать абсолютное значение (abs) в размерном массиве [4x2] в VB.NET


Всем привет,
Раньше у меня был вопрос о математической функции abs и о том, как я могу использовать ее в массиве.

Все в порядке, теперь я хочу сделать АБС в размерном массиве (я знаю, что ранее открывал вопрос о размерном массиве, но ...)

Итак, я хочу сделать расчет abs и сохранить его в новом массиве [4x2]. Что я делаю не так?

Спасибо

Что я уже пробовал:

Dim spalings As Double(,) = {{-1, 2.0}, {-3, 4}, {-5, 6}, {-0.7, 8}}
Dim spalins2 As Double(,) = New Double((spalings.Length - 1), (spalings.Length - 1)) {}
    For x As Integer = 0 To spalings.Length - 1
         For j As Integer = 0 To spalings.Length - 1
              spalins2(x, j) = Math.Abs(spalings(x, j))
         Next j
    Next x

[no name]

"Что я делаю не так?" - Ну, первое, что вы делаете не так, это все еще не сообщаете нам информацию, которая нам нужна, чтобы помочь вам. То, что вы получаете исключение массива out of bounds, - это очень, очень, очень важная информация.
Второе-это использование свойства length.
Тусклые спалинги как двойные(,) = {{-1, 2.0}, {-3, 4}, {-5, 6}, {-0.7, 8}}
Dim spalins2 As Double (,) = New Double ((spalings.GetUpperBound(0)), (spalings.GetUpperBound(1))) {}
X как целое число = 0 до spalings.GetUpperBound(0)
Для j как целого числа = 0 для спалингов.GetUpperBound(1)
spalins2(х, к) = математика.АБС(spalings(х, J в))
Далее Дж
Далее х
Тебе надо бы взять книгу по VB.NET программирование и работа через него.

x-ios

Да, я знаю, что должен читать и работать над книгой, но это сложно. Потому что я работаю над проектом, и мне нужно разработать существующую программу, чтобы она была разработана на 99' в TestPoint в срок 2 месяца. И я никогда не использовал VB.NET раньше. И сейчас я проделал действительно хорошую работу. Но на этой стадии у него есть вычисления, много вычислений между массивами.И все начинается с моего 1-го поста, о txt-файле, на который вы ответили вчера. И это очень смущает. =/
Большое вам спасибо за ваше время.

1 Ответов

Рейтинг:
8

OriginalGriff

ГМ...вы ведь знаете, какая длина возвращается для многомерного массива, да?
И что он будет возвращать одно и то же значение каждый раз, когда вы его вызываете?

Dim spalins2 As Double(,) = New Double((spalings.Length - 1), (spalings.Length - 1)) {}
И
For x As Integer = 0 To spalings.Length - 1
     For j As Integer = 0 To spalings.Length - 1
Итак, как вы думаете, сколько элементов он собирается исследовать?
Ответ таков: он возвращает общее количество элементов - в вашем случае "8".
Таким образом, ваш цикл будет выполняться 8 * 8 раз, и попробуйте посмотреть на 64 элемента. Так что ваша программа рухнет.
Вам нужно посмотреть на метод GetUpperBound: Массив.Метод GetUpperBound (Int32) (System)[^]


x-ios

Я попробовал это сделать, потому что не знал, как решить проблему с длиной...
И да, программа разбилась в 64 раза :p

 Dim spalings As Double(,) = {{-1, 2.0}, {-3, 4}, {-5, 6}, {-0.7, 8}}
        Dim spalins2(3, 1) As Double
        For x As Integer = 0 To 3
            For j As Integer = 0 To 1

                spalins2(x, j) = Math.Abs(spalings(x, j))
            Next j
        Next x

OriginalGriff

Так что пройдите по ссылке и посмотрите, что там написано...