0

こんにちは、私はプログラミングが初めてで、この本から作業しています。これは、いずれかの章の最後にある演習です。しかし、私のコードはこの例外をスローします。

        Random rand = new Random();
        List<int> numbers = new List<int>();

        for (int i = 0; i < 1000; i++)
        {
            numbers[i] = rand.Next(1, 1001);
        }

        for (int i = 0; i < numbers.Count; i++)
        {
            listBox1.Items.Add(numbers[i]);
        }

エラーは次のとおりです。 ここに画像の説明を入力

4

5 に答える 5

3

ArgumentOutOfRangeExceptionRandom.Next次の場合にのみ呼び出されminValue is greater than maxValue.ます: http://msdn.microsoft.com/en-us/library/2dx6wyd4.aspx#ddueExceptionsToggle

あなたの問題は、numbers[i]数値には要素がゼロであるため、範囲がまだないため、設定numbers[0] = random.Next(1, 1000);が返されることを意味します。代わりにArgumentOutOfRangeException使用numbers.Add(random.Next(1, 1000));

ヒントとして、配列型オブジェクト ( を使用する場合object[key]) および for ループでインデクサーを使用する場合は、次のように、for ループの上限として常に配列の長さを使用する必要があります。

for(int i = 0; i < 1000 && i < numbers.Count(); i++){
    //Do stuff with i
}

あなたの場合、アイテムを追加しない限り、ループiは常に小さくなるため、ループは決して発生しませんnumbers.Count()

于 2013-10-14T10:40:52.553 に答える
1
Try with this 

リスト

   Random rand = new Random();
                List<int> numbers = new List<int>();
                //int [] nums ;
                for (int i = 0; i < 1000; i++)
                {
                    //nums[i] = rand.Next(0, 1000);
                    numbers.Add(rand.Next(0,1000));
                    //numbers[i] = rand.Next(1, 1001);
                }

- - - - - - - - - - - - また - - - - - - - - - - - - - -----------------

配列も使用できます

配列

Random rand = new Random();
            List<int> numbers = new List<int>();
            int [] nums = new int [1000] ;
            for (int i = 0; i < 1000; i++)
            {
                nums[i] = rand.Next(0, 1000);                

            }
于 2013-10-14T10:57:09.313 に答える
1

あなたの番号リストにはまだ要素がありません。

これを試して:

numbers.add(rand.Next(1, 1001));
于 2013-10-14T10:38:08.033 に答える