读书人

小菜才接触C#做了一道题目如题!该如

发布时间: 2012-02-05 12:07:15 作者: rapoo

小菜才接触C#,做了一道题目,如题!
40. 编写一个冒泡法排序程序,要求在程序中能够捕获到数组下标越界的异常。
以下是代码:

C# code
int[] a = new int[5];            try            {                for (int k = 0; k < 5; k++)                {                    a[k] = int.Parse(Console.ReadLine());                }                for (int j = 0; j < a.Length - 1; j++)                {                    for (int i = 0; i < a.Length - 1; i++)                    {                        int t;                        if (a[i] > a[i + 1])                        {                            t = a[i];                            a[i] = a[i + 1];                            a[i + 1] = t;                        }                    }                }            }            catch (Exception)            {                Console.WriteLine("数组下标越界");                return;            }            foreach (int z in a)            {                Console.WriteLine(z);            }

我运行感觉怎么没捕捉到了,求解答

[解决办法]
catch ( IndexOutOfRangeException ex)
{
Console.WriteLine(ex);
return;
}

或者换成Exception
[解决办法]
嘿嘿 冒泡 排序 你的循环 条件有问题你 这样 排序是排不正确的
[解决办法]
楼上的 把 第二次循环 些成了 死的 也不是很好的选择 看看我这个吧
for(int i=0;i <a.Length;i++)
{
for(int j=a.Length;j> i;j--)
{
if(a[i]> a[j])
{
这里的你就自己写吧
}
}
}
[解决办法]
i 和 j 的范围都是 [0, (Length - 2)],注意,你的判断是 < Length - 1,当前 length 是 5,所以 i 和 j 的范围就是 0 ~ 3,加个 1,范围就是 1 ~ 4,怎么都越不了界啊。
[解决办法]
你的算法没有错,而且不会触发数组下表越界这个异常。
for (int k = 0; k < 5; k++)
{
a[k] = int.Parse(Console.ReadLine());
}
这就是个长度为5的数组,根本就不会越界。
for (int k = 0; k < 6; k++)
{
a[k] = int.Parse(Console.ReadLine());
}
这样才会有这个异常

读书人网 >C#

热点推荐