Почему он показывает, что индекс находится за пределами массива

#c# #arrays #indexing #reverse

#c# #массивы #индексирование #обратный

Вопрос:

Я получаю, что индекс выходит за пределы в строках 33 и 46. Почему это? Я пытаюсь изменить массив на противоположный. Я знаю, что означает код ошибки, но я не знаю, почему я его получаю. Строка 33 — строка reversed = reverseArray(обработка); Строка 46 — возврат reverseCraft[5];

         //make an array to be reversed
        string[] craftArray = new string[5] { "Iron", "Stone", "Copper", "Steel", "Clay" };


        //create a variable to hold return value
        string[] crafting = new string[5];





        //function call the ReverseCraft method
        string reversed = ReverseArray(crafting);

        //Report the calculation to the user
        Console.Write("The array reversed is"   reversed);



    }
    public static string ReverseArray(string[] craft)
    {
        //create a variable and reverse
        string[] reverseCraft = new string[5] { craft[4], craft[3], craft[2], craft[1], craft[0] };
        //return value
        return reverseCraft[5];

    }
}
}
  

Комментарии:

1. reverseCraft[5] должно быть [4] . Поскольку массивы основаны на нуле.

2. Количество ваших строк также выходит за рамки

3. Метод reverseArray должен возвращать массив строк, а не строку.

4. Не отвечает на ваш вопрос, но в будущем я бы сначала использовал Array. Обратный (). Если вы собираетесь написать функцию для выполнения чего-то подобного, я бы рекомендовал использовать цикл for с проверками границ..

Ответ №1:

Ваш обратный метод имеет неправильную подпись. Он должен возвращать string[] , вот так:

 public static string[] ReverseArray(string[] craft) {
    //create a variable and reverse
    string[] reverseCraft = new string[5] { craft[4], craft[3], craft[2], craft[1], craft[0] };
    //return value
    return reverseCraft;
}
  

С этим кодом все, что вам нужно сделать, это правильно распечатать результат:

 string[] reversed = ReverseArray(crafting);
//Report the calculation to the user
Console.Write("The array reversed is "   string.Join(", ", reversed));
  

Комментарии:

1. Хорошо, спасибо. Есть ли другой способ сделать это вместо использования string.join?

2. @Xoax Да, вы можете написать цикл.

Ответ №2:

Это выдает ошибку в строке

верните reverseCraft[5];

потому что нет обратного хода [5].

Первым элементом reverseCraft является reverseCraft[0], а последним элементом является reverseCraft [4].

Комментарии:

1. Исправлена эта часть. Спасибо