実現したいこと
・List<>内に乱数で0が出るまで格納し、コンソールへ表示させる。
・取得した乱数を奇数・偶数で分けて表示させる。
格納した乱数を表示させ、奇数、偶数に分ける処理まではできています。
発生している問題・エラーメッセージ
分けた奇数・偶数を以下のようにして表示させることを試みましたが、エラーが出てしまい表示できません。
C#
1static void Main(string[] args) 2 { 3 int num; 4 var kisu = new List<int>(); 5 var gusu = new List<int>(); 6 var rnd = new Random(); 7 8 do 9 { 10 num = rnd.Next(0, 11); 11 Console.WriteLine("0~10の値を出力:" + num); 12 13 if(num % 2 == 0) 14 { 15 gusu.Add(num); } 16 else if(num % 2 == 1) 17 { 18 kisu.Add(num); 19 } 20 21 22 } while (num != 0); 23 24 Console.Write("偶数:"); 25 foreach (int i in gusu) 26 { 27 Console.Write(gusu[i] + " "); 28 } 29 Console.WriteLine(); 30 31 Console.Write("奇数:"); 32 foreach (int j in kisu) 33 { 34 Console.Write(kisu[j] + " "); 35 } 36 Console.WriteLine(); 37 }
###エラーコード
0~10の値を出力:9 0~10の値を出力:3 0~10の値を出力:4 0~10の値を出力:2 0~10の値を出力:2 0~10の値を出力:6 0~10の値を出力:0 偶数:0 2 2 ハンドルされていない例外: System.ArgumentOutOfRangeException: インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 パラメーター名:index 場所 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) 場所 System.Collections.Generic.List`1.get_Item(Int32 index) 場所 Ex.Program.Main(String[] args) 場所 D:Program.cs:行 27 続行するには何かキーを押してください . . .
###調べたこと
・「コレクションのサイズよりも小さくなければなりません。」
・「System.ArgumentOutOfRangeException」
などのキーワードで解決を試みたのですが今回のエラーに対しての対処法は出てきませんでした。
以下の過去記事を参考にしようと試みたのですが、記事内にはエラーの原因と対処法が記載されておりませんでした。
https://teratail.com/questions/76685
何が原因で起こっているのか、どう対処したらいいのか、助言をお願いします。
補足情報(FW/ツールのバージョンなど)
OS:Windows10 Pro 64bit
IDE:Visual Studio Community 2015
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 07:15