поместить список в массив?

Во-первых, я просто хочу сказать, что я новичок в vb.net и просто программирую в целом. Если возможно, наш профессор, вероятно, хотел, чтобы мы использовали самый простой из возможных методов. Поэтому, пожалуйста, не предлагайте причудливые и абстрактные методы для того, чтобы сделать то, что я пытаюсь сделать. Спасибо :)

Итак, у меня есть список. Там нет установленного количества предметов. Я могу ввести столько чисел, сколько захочу. И я хочу преобразовать все элементы в этом списке в массив. Но очевидно, что вы не можете видеть массив. Поэтому я сделал так, чтобы он распечатывался на этикетке. Но вышло только последнее число, введенное в список.

Мой код для получения списка в массив таков:

Dim i As Integer

For i = 0 To lstbxInput.Items.Count
    dblarray(i) = CDbl(lstbxInput.Items(i))
Next i

И в этом подразделе в качестве эталонного параметра использовался dblarray as double.

И чтобы распечатать массив, я использовал этот код:

Dim DblArray(lstbxInput.Items.Count - 1) As Double

getNumbers(DblArray)
lblLrgAns.Text = DblArray(lstbxInput.Items.Count - 1).ToString

Я не до конца понимаю Byref и надеюсь, что использовал его правильно. Я использовал затемнение dblarray, потому что так сказал нам профессор.


person bhroask    schedule 01.12.2014    source источник
comment
Если вы внимательно посмотрите на свой код, вы заметите, что у вас есть цикл для установки каждого элемента массива с преобразованными значениями элементов. Итак, почему вы думаете, что для вывода значений массива вам не нужен еще один цикл для каждого элемента массива?   -  person Steve    schedule 01.12.2014


Ответы (1)


Основываясь на приведенном ниже коде, вы получили массив (DblArray) именно то, что хотели.

Dim DblArray(lstbxInput.Items.Count - 1) As Double

getNumbers(DblArray)

Теперь по вашей проблеме:

Но вышло только последнее число, введенное в список.

Это из-за этого синтаксиса

lblLrgAns.Text = DblArray(lstbxInput.Items.Count - 1).ToString

Вы берете только последний элемент DblArray, то есть DblArray(lstbxInput.Items.Count - 1). Вам нужно получить DblArray(0) (первый элемент), DblArray(1) (второй элемент), DblArray(2) (третий элемент), ..., вплоть до DblArray(lstbxInput.Items.Count - 1) (последний элемент). Предполагая, что вы хотите назначить все DblArray элементов lblLrgAns.Text, разделенных запятой, вам понадобится цикл, как показано ниже.

Dim i As Integer

For i = 0 To DblArray.Length - 1
    lblLrgAns.Text = lblLrgAns.Text & DblArray(i).ToString

    ' add a comma unless it's the last index
    If (i < DblArray.Length - 1)
        lblLrgAns.Text = lblLrgAns.Text & ", "
    End If
Next i
person ekad    schedule 01.12.2014
comment
Большое спасибо за простой и лаконичный ответ! - person bhroask; 01.12.2014