2

こんにちは、みんな

私がやろうとしているのは、「FillDeck」メソッドを呼び出して「デッキ []」を 52 個の配列要素で埋めることです。for ループは要素を追加するために使用されます。テスト目的では、for ループから y+x 値を追加するだけです。私がしたことは、変数「配置」を使用してインデックス位置を示し、配置変数をインクリメントして、ループの反復ごとにインデックスを増やし、その特定のインデックスに配列要素を追加することでした。ただし、私が理解しようとしている IndexOutOfRangeException を取得します。

注意: 配列にあらかじめ決められた値を自動的に使用することはできません。配列に値を追加する目的でメソッドを呼び出す必要があります。ネストされた for ループを持つカード デッキであるため、ランク/スーツを決定することは、これにアプローチするための良い方法です。

ありがとう =)

    static void Main(string[] args)
    {
        int [] deck = {};
        FillDeck(deck); // Error Here
    }
    public static void FillDeck(int[] deck)
    {
        int placement = 0;
        // 0 = Ace , 12 = King : 0 = Hearts, 1 = Diamonds, 2 = Clubs, 3 = Spades
        for (int x = 0; x < 13; x++)
            for (int y = 0; x < 4; ++y)
            {
                deck[placement] = x + y;// Error here
                ++placement;
            }

    }
4

2 に答える 2

5
int [] deck = {}

これにより、 size の配列が作成され0ます。
何も入れられません。

new int[52]実際に物を保持できる配列を作成するには、(または他の適切な数を) 書き込む必要があります。

List<T>または、メソッドを呼び出すことで任意の (妥当な) サイズに拡張できる を作成できますAdd()

于 2012-05-30T02:59:41.163 に答える
2

もちろんエラーがあります。配列の初期サイズが 0 であるということは、そこに格納できる要素がないことを意味します。以下のコードがあなたを助けることを願っています:

    public static int[] FillDeck()
    {
        var deck = new List<int>();
        // 0 = Ace , 12 = King : 0 = Hearts, 1 = Diamonds, 2 = Clubs, 3 = Spades
        for (int x = 0; x < 13; x++)
            for (int y = 0; x < 4; ++y)
            {
                deck.Add(x + y);
            }

        return deck.ToArray();

    }
于 2012-05-30T03:05:44.203 に答える