回 帖 发 新 帖 刷新版面

主题:为什么老是提示数组越界

using System;

namespace Project2
{
    /// <summary>
    /// Class2 的摘要说明。
    /// </summary>
    public class Class2
    {
        static void Main()
        {
                int n,i;
            n=Console.Read();
            int []a=new int[n];
            a[1]=1;
            a[2]=1;
            Console.Write("{0},{1},",a[1],a[2]);
            for( i=3;i<=n;i++)
                {   a[i]=a[i-2]+a[i-1];
                   Console.Write("{0},",a[i]);
                }
    Console.WriteLine();
        }

    }
}

回复列表 (共3个回复)

沙发


    static void Main()
        {
            int n,i;
            int []a=new int[20];
            a[0]=1;
            a[1]=1;
            Console.Write("{0},{1},",a[0],a[1]);
            for( i=2;i<20;i++)
            {
                    a[i]=a[i-1]+a[i-2];
                Console.Write("{0},",a[i]);
            }
           
            Console.WriteLine();
            //
            // TODO: 在此处添加代码以启动应用程序
            //
        }

板凳

数组的长度应该在new的时候给确定的值
比如int[] a=new int[3];
或者是int[] a=new int[] {1,2,3};
不能给一个变量

深层次的原因是
这个类在初始化的时候
会将n的值先设为0
接下来new会为a所指的数组分配空间
按照n的大小,这样一来你的数组实际上是0长度的

你可以测试一下

3 楼

数组的长度假如不给出明确数字,则应为
int[] intArray = new int[] {...};
假如给定数字,则必须是
int[] intArray = new int[3] {1,2,3};
而数字与元素个数不一致是错误的:
int[] intArray = new int[5] {1,2,3};
你的在此给出N,则会产生不可预计的错误!


我来回复

您尚未登录,请登录后再回复。点此登录或注册