显示一个数组

时间:2012-09-09 19:02:21

标签: c#

我正在尝试编译这个关于Visual Studio 2010中的数组和类的代码,但我在运行它时出现问题(consoleapplication.Carray不包含一个带0参数的构造函数)正在显示,有人可能告诉我是什么错了我正在做代码只显示和数组或有什么办法可以做到吗???? 代码

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            CArray CArray;
            CArray nums = new CArray();
            for (int i = 0; i <= 49; i++)
                nums.insert(i);
            nums.displayElements();
        }
    }

    class CArray
    {
        private int[] arr;
        private int upper;
        private int numElements;
        public CArray(int size)
        {
            arr = new int[size];
            upper = size - 1;
            numElements = 0;

        }
        public void insert(int item)
        {
            arr[numElements] = item;
            numElements++;
        }
        public void displayElements()
        {
            for (int i = 0; i <= upper; i++)
                Console.Write(arr[i] + " ");

        }
        public void clear()
        {
            for (int i = 0; i <= upper; i++)
                arr[i] = 0;
            numElements = 0;

        }
    }
}

2 个答案:

答案 0 :(得分:3)

好的,好几个问题。你有一个请求数组大小的构造函数,你的主程序没有将它提供给构造函数。这也是有问题的,因为您在displayelements()循环中使用数组的大小。由于构造函数接受参数,因此无法编译。您至少需要更改Main()程序,以便将数组的大小提供给您在类CArray中定义的构造函数。更改以下内容:

            CArray nums = new CArray(50); //since 50 is the length of your array

答案 1 :(得分:1)

你的CArray类中有一个构造函数,它以整数作为参数(int size)。您没有将该值传递给main方法中的CArray类。

static void Main()
     {
      int size = 33; //<-- declare an integer "size"
      CArray nums = new CArray(size); // <-- make an array with a size of "size", in this case, 33
      for (int i = 0; i <= size-1; i++) // <-- fill the integer with "size" numbers
      nums.insert(i);
      nums.displayElements();                  
     }

我也不会硬编码您在示例中发布的for循环中的大小。 现在你对(int i = 0; i <= 49; i++)说了什么,它基本上忽略了你应该传递给构造函数的数组的大小。 如果您使用我发布的示例,您将始终拥有一个x元素数组。 如果你留下i <= 49位并且你的尺寸是100,那么你的displayElements方法将打印出0到49之间的数字,然后是一大堆0。我不认为这是你想要的^^