2012-04-10 9 views
1

私はWindows PhoneとC#も知っています。私は、第二のために()サイクルはバグが含まれていることが分かったのtry-catchを使用してIndexOutOfRangeException - Windows Phone(C#)

public void Coloring() 
    { 
     szinek_base.Add(Color.FromArgb(255, 0, 171, 169)); 
     szinek_base.Add(Color.FromArgb(255, 140, 191, 38)); 
     szinek_base.Add(Color.FromArgb(255, 160, 80, 0)); 
     szinek_base.Add(Color.FromArgb(255, 230, 113, 184)); 
     szinek_base.Add(Color.FromArgb(255, 240, 150, 9)); 
     szinek_base.Add(Color.FromArgb(255, 27, 161, 226)); 
     szinek_base.Add(Color.FromArgb(255, 229, 20, 0)); 
     szinek_base.Add(Color.FromArgb(255, 51, 153, 51)); 
     int remove; 
     Color szin = new Color(); 
     Random generator = new Random(); 
     List<int> lapok = new List<int>(); 
     for (int l = 0; l < 16; l++) 
     { 
      lapok.Add(l); 
     } 

     for (int i = 0; i < 8; i++) 
     { 
       szin = szinek_base[generator.Next(0, szinek_base.Count)]; 

       remove = lapok[generator.Next(0, lapok.Count)]; 
       szinek[remove] = szin; 
       lapok.Remove(remove); 
       szinek_base.Remove(szin); 

       remove = lapok[generator.Next(0, lapok.Count)]; 
       szinek[remove] = szin; 
       lapok.Remove(remove); 
       szinek_base.Remove(szin); 
     } 
    } 

:私は私のカラーリングで IndexOutOfRangeException()関数があることが分かりました。 しかし、ブロックの半分に分割してtry-catchを使用すると、エラーが見つからず、最初の部分も見つからなくなります。 2番目もどちらもありません。このコードは、メモリゲームの一部としてWindows 7の下でうまく動作しますが、私はアイデアがありません。 助けてくれてありがとう、文法上のミスや他の間違いをお詫び申し上げます。私はまだStackOverflowプロトコルを知らない。

編集:最初の答えが間違っていた、

public List<Color> szinek_base = new List<Color>(); 
Color[] szinek = new Color[8]; 
+1

例外スタックトレースを検査する必要があります。これは問題がどこにあるのかを正確に伝えます。 – ColinE

+1

szinekとは何ですか? –

答えて

4

szinek 8つの要素の配列のようですが、lapokは16個の要素のリストです。

lapok.Countがランダムコンストラクタの第二引数に渡されると、それが8よりも大きな何かを生成する可能性があります、それはIndexOutOfRangeExceptionに

+2

はい、問題です、ありがとうございます! – sifear

3

編集

私の謝罪:言及するのを忘れたが、メインの名前空間には、それらが含まれています。 Adrianが強調しているように、誤ったリストカウントプロパティがリムーバブルアイテムを強調表示するために例外がスローされています。コメントや、後で編集から

+2

私は事を理解していません。 countが8のとき、ジェネレータは0から7の間に何かを生成します。なぜ0から6の間に何かを生成する必要があります。これがCount - 1の処理です。 –

+1

@ ThePowerどうもありがとう! – sifear

1

を上げないことを意味します私の前を無視してください回答。私はあなたがのみとすることができる、szinekから「削除」要素を削除しよう

0〜16の任意の場所にすることができ、ランダムな変数に基づいて削除し、実際の問題...

に位置していますサイズ8.

+1

はい、問題です、ありがとうございます! – sifear

関連する問題