-2

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;

        }
    }
}
4

2 に答える 2

3

OK、いくつかの問題があります。配列のサイズを要求しているコンストラクターがあり、メインプログラムがそれをコンストラクターに供給していない場合。displayelements() ループで配列のサイズを使用しているため、これも問題です。コンストラクターが引数を取るため、これはコンパイルされません。少なくとも、Main() プログラムを変更して、クラス CArray で定義したコンストラクターに配列のサイズを供給するようにする必要があります。以下を変更します。

            CArray nums = new CArray(50); //since 50 is the length of your array
于 2012-09-09T19:09:03.487 に答える
1

CArray クラスに、整数をパラメーター (int サイズ) として受け取るコンストラクターがあります。メインメソッドでその値を 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 を出力します。それはあなたが望んでいることではないと思います^^

于 2012-09-09T19:11:58.273 に答える