循环,tab.Length和无限多个零

时间:2018-06-05 23:35:25

标签: loops infinite-loop

在void A_shaped()中是循环错误。

我认为这是变量Tab.Length的问题,但我不明白为什么。

有人可以向我解释一下吗?

当程序启动循环时只填充零...我可以替换此变量吗?下面我在标签A_shaped中的Coctail排序上发送代码。代码被截断。

抱歉,这是我的第一篇文章和我的第一个程序之一。

     static void A_shaped(int[] Tab)
            {
                int j = 0;

                for (int i = 0; i < Tab.Length ; i += 2)
                {
                    Tab[j] = i;
                    j++;
                }

                for (int i = Tab.Length; i > 0; i -= 2)
                {
                    Tab[j] = i;
                    j++;
                }
            }


    static void Main(string[] args)
            {

                int[] Tab = new int[8] { 25000, 50000, 75000, 100000, 125000, 150000, 175000, 200000 };

    for (int i = 0; i < 8; i++)

    {
    int[] a_shaped = new int[Tab[i]];

                    CocktailSort(a_shaped);

                    foreach (int a in a_shaped)
                        Console.WriteLine(a);

}

1 个答案:

答案 0 :(得分:0)

有点难以理解你的逻辑。老实说,我不确定你想要做什么,但我认为你基本上都错了。

让我们以main()为例:

首先,您要创建一个int数组,名为Tab并包含高度值。没问题。

int[] Tab = new int[8] { 25000, 50000, 75000, 100000, 125000, 150000, 175000, 200000 };

现在让我们谈谈你的for (int i = 0; i < 8; i++)循环。以下是i等于0时第一次在循环中的内容:

首先,执行此操作:int[] a_shaped = new int[Tab[i]];您正在创建另一个名为int的{​​{1}}数组,其大小为a_shaped,位于索引处{在int中{1}}。所以基本上,你要创建一个大小为25000的数组。

然后,您尝试对此数组i进行排序,并传递给Tab函数。但是你从来没有初始化它,所以你的a_shaped数组包含25000个等于零的整数。

然后,最后,您使用以下行打印CocktailSort的内容:

a_shaped

这将打印a_shaped中包含的25000个整数,它们都等于零。这让你觉得它是一个无限循环或一个bug,但事实并非如此。正如您所问,它只是打印foreach (int a in a_shaped) Console.WriteLine(a); 中包含的所有0。

结论:

无论你认为自己在做什么,都不是。您正在显示一个函数a_shape,但您从未调用它。您只需创建一个变量,其调用方式与a_shape几乎相同。你也忘记了它的初始化,并给它一个你可能不想要它的大小。然后,通过打印这些填充为0的巨大数组,您认为您面临无限循环,但您只是打印了大量的零。

没有冒犯,但我建议你先练习简单的程序来学习语言,然后再回过头来。