Выброшенное исключение: 'System.IndexOutOfRangeException' в VB.net

Так что я продолжаю получать ошибку

Exception thrown: 'System.IndexOutOfRangeException'

Для моего счетчика массива. Я все еще изучаю Visual Basic, но у меня есть знания программирования на других языках, поэтому я не уверен, что я просто неправильно перевожу синтаксис здесь или это просто логическая ошибка, которую я не вижу.

Массив arrayNumsMultiply() - это целочисленный массив, объявленный с 6 значениями. Моя переменная счетчика также была ранее объявлена ​​в программе как целое число.

Следующий код предназначен для пересчета 6 чисел, проверки, есть ли в них два целых числа (например, 47, то есть 4 и 7), а затем их сложения. Оттуда он сохраняет его обратно в массив и стирает предыдущее значение. У меня есть System.Console.WriteLine в коде, чтобы увидеть, инициируется ли оператор If, а это нет, но журнал консоли счетчика есть. Есть идеи, что я делаю неправильно? (Конкретная строка, в которой возникает ошибка, - это If arrayNumsMultiply(counter).ToString.Length = 2 Then)

        For counter = 0 To 5
            If arrayNumsMultiply(counter).ToString.Length = 2 Then
                Dim numOne As String = arrayNumsMultiply(counter).ToString().Substring(1, 1)
                Dim numTwo As String = arrayNumsMultiply(counter).ToString().Substring(2, 1)

                Convert.ToInt32(numOne)
                Convert.ToInt32(numTwo)

                Dim totalNum As Integer
                totalNum = numOne + numTwo

                arrayNumsMultiply(counter) = totalNum

                System.Console.WriteLine("If statement for adding in an integer working")
            End If

            System.Console.WriteLine("Counter working")

        Next counter
counter больше или меньше размера массива. Используйте мышь, когда она сломается, чтобы узнать больше. Вы сказать, у него шесть значений, поэтому 0 To 5 должен работать, но VS / VB не согласен, и мы не можем видеть, где вы его создали.
Ňɏssa Pøngjǣrdenlarp 20.04.2018 01:58

Если вы хотите получить доступ к каждому элементу или элементу в массиве или коллекции, обычно лучше использовать цикл For Each или же использовать фактический массив или коллекцию, чтобы указать верхнюю границу цикла. то есть For Each elem In myArray или For i = 0 To myArray.GetUpperBound(0).

jmcilhinney 20.04.2018 02:00

Кстати, если вы хотите получить один символ из String, не используйте Substring. Вы можете просто проиндексировать String как массив, чтобы получить Char по этому индексу.

jmcilhinney 20.04.2018 02:01

@Plutonix Dim arrayNumsMultiply(6) As Integer - это так, как заявлено, верно? @jmcilhinney Я сделал это, и это не меняет происходящую ошибку, поскольку ошибка находится в строке оператора If. Выполняется сам оператор for, а не оператор If.

Aestrus 20.04.2018 02:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
462
1

Ответы 1

Если длина вашей строки равна 2, первый символ находится в позиции 0, а второй символ - в позиции 1. Как и большинство вещей в .net, это нулевое значение. Итак, правильный код для этих строк ...

Dim numOne As String = arrayNumsMultiply(counter).ToString().Substring(0, 1)
Dim numTwo As String = arrayNumsMultiply(counter).ToString().Substring(1, 1)

Другие вопросы по теме