2013-10-24 9 views
0

Я пытаюсь создать цикл for для цикла через массив и выполнить базовый переключатель с временной переменной для выключения самого большого числа. Мне также нужно напечатать, какую позицию он использовал в массиве. Это то, что у меня есть до сих пор.Как сравнить элементы массива

Dim highest As Decimal = gasArray(0) 
Dim j As Integer = 1 

For a As Integer = 0 To 11 Step 1 
      If gasArray(a) < gasArray(a + 1) Then 
       highest = gasArray(a + 1) 
       a = j 
      End If 

     Next 


     avgPriceLbl.Text = "$" & highest & " in month " & Array.FindIndex(j) 
+0

Что ваш вопрос? –

+0

@DerekTomes хорошо это не работает. Я пытаюсь понять, как это сделать, я на правильном пути, что нужно изменить? – SkyVar

+0

Определить '' это не работает''. Как это не работает? Не компилируется? Сбои? Не дает ожидаемых результатов? – nhgrif

ответ

1

Что вам нужно следующее:

j = 0 
highest = gasArray(j) 
For a As Integer = 1 To 11 Step 1 
     If highest < gasArray(a) Then 
      highest = gasArray(a) 
      j = a 
     End If 

    Next 
+0

Ничего себе, я не могу поверить, что не видел этой логической ошибки. Спасибо что подметил это. – SkyVar

+0

Теперь, как я могу напечатать элемент массива? – SkyVar

+0

У вас уже есть два значения: «j» - индекс массива, который содержит максимальное значение, «самый высокий» - значение gasArray (j) – user2784234

1

Хорошо, вы новичок в этом, надеюсь, комментарии будут иметь смысл ...

' create some dummy data 
Dim gasArray() As Decimal = New Decimal() {1, 7, 23, 11, 57, 0} 

Dim highest As Decimal 
Dim index As Integer 

' it's better to ask an array what the bounds are 
For a As Integer = gasArray.GetLowerBound(0) To gasArray.GetUpperBound(0) Step 1 
    If highest < gasArray(a) Then 
     highest = gasArray(a) 
     index = a 
    End If 
Next 

' this is a prettier way to create strings 
avgPriceLbl.Text As String = String.Format("${0} in month {1}", highest, index) 
Смежные вопросы