我得到的索引超出了数组错误的范围

时间:2017-10-22 08:14:25

标签: c#

所以,我制作了一个程序,该程序应该收集你输入的数字,然后将它们倒数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace K4_Labb_3
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.Write("Ange antalet heltal du vill lagra i fältet: ");

            int heltal = int.Parse(Console.ReadLine());

            int[] i = new int[heltal];

            Console.WriteLine("Ange " + heltal + " heltal: ");

            for (int j = 0; j < i.Length; j++)
            {
                int o = int.Parse(Console.ReadLine());
                i[j] = o;

            }

            Console.WriteLine("Talen utskrivna baklänges: " );
            for (int l = i.Length; l > 0; l--)
            {

                Console.Write(i[l]);
            }


        }
    }
}

但是我收到错误“索引超出了数组的范围”,我想知道是否有人可以帮助我,并解释错误。

2 个答案:

答案 0 :(得分:3)

问题在这里:

        for (int l = i.Length; l > 0; l--)

当您有一个长度为LEN的数组时,您只能访问索引为0, 1, 2, ..., LEN-1的元素。

答案 1 :(得分:0)

在打印阵列时,你是从一个超过极限的地方开始的。如果长度为5,则数组位置为0,1,2,3,4。 但是在你打印的程序中,你从5开始,这就是抛出错误而且是正确的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.Write("Ange antalet heltal du vill lagra i fältet: ");

            int heltal = int.Parse(Console.ReadLine());

            int[] i = new int[heltal];

            Console.WriteLine("Ange " + heltal + " heltal: ");

            for (int j = 0; j < i.Length; j++)
            {
                int o = int.Parse(Console.ReadLine());
                i[j] = o;

            }

            Console.WriteLine("Talen utskrivna baklänges: ");
            for (int l = i.Length-1; l >= 0; l--)
            {

                Console.Write(i[l]);
            }


        }
    }
}