2016-05-02 6 views
0

Я пытаюсь получить правильный результат из массива. Я пробовал все, что мог придумать. Я новичок в VB.Net и программировании.Получение неправильного вывода в массиве

У меня есть файл на usb, из которого я получаю массив. txtfile настроен, чтобы дать мне годы и число, связанное с этим годом. например. год 21 1 год 19 год 18 год 17 и так далее.

Я пытаюсь найти год с наибольшим количеством и отобразить его на этикетке.

Я получаю 21 год, потому что он самый высокий, но мне действительно нужен год с наивысшим ассоциированным номером, в этом случае это будет год 16 с 27 в качестве связанного числа.

вот части кода, которые, как мне кажется, связаны с ним. Я написал, чтобы найти его, но я получаю первый год только что на самом деле год 21.

первая линия или лет является _strYears(_intSizeOfArray) as string

вторая строка или число assoiciated с годами это _strNumberOfHurricanes(_intSizeOfArray as integer

опция строги должна быть для назначения

Dim intAverage As Double 
    Dim intYear As Integer 
    Dim intMostYears As Integer = 0 


    ' Calculate the Statistics and display the results 
    For intIndex As Integer = 0 To _intSizeOfArray 
     If intYear < _intNumberOfHurricans(intIndex) Then 
      intYear = _intNumberOfHurricans(intIndex) 
     End If 
     intAverage = intAverage + _intNumberOfHurricans(intIndex) 
    Next 

    intAverage = intAverage/_intNumberOfHurricans.Length 
    For intLoopCounter = 0 To _intSizeOfArray 
     If _strYears(intMostYears) < _strYears(intLoopCounter) Then 
      intMostYears = intLoopCounter 
     End If 
    Next 



    ' Display the statistics for the Storm Average in the selected Year 
    ' and the most active year within the range of year. 
    lblNumberOfHurricanes.Text = "The Number of Hurricanes in the " & 
     _strYears(intChoiceSelected) & " is " & _intNumberOfHurricans(intChoiceSelected).ToString() & "." 
    lblAvergeNumberHurricanes.Text = "The Average Number of Storms was " & FormatNumber(intAverage, 1) & " Hurricanes." 
    lblMostStorms.Text = "The" & _strYears(intMostYears) & " with " & intYear & " Had The Most Storms Between " & 
     (_strYears(20) & " And " & (_strYears(0))) 

результаты я получаю первые две метки правильны и последняя метка отображаются 21 год, который должен 16, и 27, который корр и год 21 и год 1, что является правильным.

пожалуйста, это назначение должно быть выполнено через 1 и 1/2 часа, я пытался получить весь этот день. если кто-нибудь может дать мне представление о том, где это неправильно. Я был бы очень признателен.

+0

Можете ли вы использовать точное название ярлыков, точный результат, который вы ожидаете, и результат, который вы получаете? В настоящее время становится немного запутанным следовать «первой этикетке, последней метке». – jitendragarg

+0

Прошу прощения за то, что вы сбиваете с толку. Мне нужно найти год с большинством штормов. поэтому ответ, который я ищу, - «Год 2005», потому что в этом году было 27 штормов. то, что я получаю, это «Год 2010», потому что это самый большой год, но только 12 штормов. жаль, что –

+0

Имеет ли в 2010 году самое низкое количество бурь? Кажется, вы пытаетесь получить меньше всего. штормов в первом цикле, и не самый. – jitendragarg

ответ

1

Эти 3 строки сделают большую часть того, что вы пытаетесь сделать выше. Поскольку это задание, я не уверен, что ваш учитель позволит вам использовать Linq, но поскольку вы не указали ничего подобного, это должно дать вам некоторый свет для будущего, если ничего другого:

Imports System.Linq 

Dim intAverage As Double = _intNumberOfHurricans.Average() 
Dim intMostYears As Integer = _intNumberOfHurricans.IndexOf(_intNumberOfHurricans.Max()) 

Теперь вы можете отображать эту информацию на своих этикетках так же, как и вы.

+0

HI. Огромное спасибо. Я попытался ввести импорт System.linq, и это не позволит мне. вероятно, потому, что я должен иметь опцию strict on. поэтому я добавил две другие строки, и я получаю «индекс ошибки». Это должно быть чем-то, что мне не хватает. Должен быть способ посмотреть файл. и получить год с наибольшим числом. Еще раз спасибо, что позволили мне попробовать. Я ценю это. –

+0

@RonEHillsJr .: Я не могу придумать вескую причину ошибок, которые вы описываете. Ссылка 'System.Linq', как правило, доступна из готовых к использованию в новых проектах VB.NET, поэтому' Импорт' должен работать. Обратите внимание, что 'Импорт' должен быть первой строкой вашего кода (вверху файла). Остальные две строки должны заменить код, который вы показали выше (кроме строки обновления метки), ничего больше. – dotNET

Смежные вопросы