乱数で1~10の数字を発生させて最大値と最小値を表示させたいのですが、以下のように書いてもうまくできません。
c#
1 Random rnd = new Random(); 2 string num = " "; 3 4 5 for(int i = 0; i < 11; i++) 6 { 7 int dise = rnd.Next(1, 11); 8 num += dise + " "; 9 } 10 11 Console.WriteLine(num); 12 Console.WriteLine(num.Max()); 13 Console.WriteLine(num.Min()); 14
結果が以下のようになってしまいます。
9が最大値なのもおかしいし最小値が表示されません。
{追記}
自分なりに調べて、最大値と最小値はたぶん以下のコードで出てくるようになりました。たぶんというのは、乱数で発生した10個の数字が表示できないから確認できないのです。以下の通り、listを使って書いてみたのですが、listの中身を表示させるために一回stringに変換してからconsole.writelineで表示させようとしたところ失敗してしまいました。
c#
1 var samplelist = new List<int>(); 2 Random rnd = new Random(); 3 4 5 for(int i = 0; i < 11; i++) 6 { 7 int a = rnd.Next(1, 11); 8 samplelist.Add(a); 9 } 10 11 string n = samplelist.ToString(); 12 Console.WriteLine(" " + n); 13 Console.WriteLine(samplelist.Max()); 14 Console.WriteLine(samplelist.Min());
たぶん先の質問、回答の延長で考えているのかもしれませんが、
https://teratail.com/questions/327609
> string num = " ";
...
> int dise = rnd.Next(1, 11);
> num += dise + " ";
はstring(文字列)で扱っていて、それすなわち配列ではありません。
文字列に対してMax、Minを行っても、文字列の中で辞書順で一番最大の文字'9'と最小の文字' 'が出力されてるだけです。
samplelist.ToString では List の各要素は表示されません。
List を何かの文字で区切って表示したい場合には string.Join メソッドが使えます。
回答5件
あなたの回答
tips
プレビュー