注册 登录
编程论坛 C# 论坛

数组越界问题

l2480035288 发布于 2014-11-11 19:53, 572 次点击
排序问题,最后显示引索数组越界,怎么解决
为什么会有这个问题

{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        float[] a = new float[5];
        float temp;
        int i = 0;
        int j = 0;
        private void bu1_Click(object sender, EventArgs e)
        {
            a[i] = Convert.ToSingle(text1.Text);
            lal.Text += a[i] + " ";
            i++;
        }
        
        private void bu2_Click(object sender, EventArgs e)
        {
            for (i = 1; i <=4; i++)
            { for(j=i+1;j<=4;j++)
                if(a[i]>a[j])
                {
                    temp=a[j];
                    a[j]=a[i];
                    a[j]=temp;
            }
            lal2.Text = "\n 排序之后:";
            for(i=0;i<=4;i++)
            {
                lal2.Text +=a[i];
            }
        }
    }
}
3 回复
#2
yinniannian2014-11-13 11:47
你输入5个数字的时候是没有问题的。超过时就会报错,应为你的数组的长度就是5。
#3
编号10162014-11-13 17:28
把最后面的<=4改成<4,试试看可不可以!
#4
xf7723803422014-11-18 11:25
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        float[] a = new float[5];
        float temp;
        int i = 0;
        int j = 0;
        private void bu1_Click(object sender, EventArgs e)
        {
            a[i] = Convert.ToSingle(text1.Text);
            lal.Text += a[i] + " ";
            i++;
        }
        
        private void bu2_Click(object sender, EventArgs e)
        {
            for (i = 1; i <=4; i++)
            {for(j=i+1;j<=4;j++)
                if(a[i]>a[j])
                {
                    temp=a[j];
                    a[j]=a[i];
                    a[j]=temp;
            }
            lal2.Text = "\n 排序之后:";
            for(i=0;i<=4;i++)
            {
                lal2.Text +=a[i];
            }
        }
    }
}
红色标记的地方明显会超过数组容量,应该是<4

[ 本帖最后由 xf772380342 于 2014-11-18 11:29 编辑 ]
1