[英](C#) How can I take numbers from my random number generator and output the highest and lowest number in a message box?
我有一個隨機數生成器,對於一個賦值,我們必須取隨機數並在最高和最低數字的消息框中輸出。 我想我需要以某種方式使用if / else但是有點困惑。 我現在的代碼如下:
class Program
{
static void Main(string[] args)
{
Random random = new Random();
int randomNumber;
for (int i = 0; i < 11; i++)
{
randomNumber = random.Next(1000);
Console.WriteLine(randomNumber);
}
}
}
如果將所有數字放在集合中,則可以使用LINQ to Objects擴展方法Min
和Max
Random random = new Random();
List<int> randos = new List<int>();
for (int i = 0; i < 11; i++)
{
randos.Add(random.Next(1000));
}
int min = randos.Min();
int max = randos.Max();
Console.WriteLine("The minimum value is " + min);
Console.WriteLine("The maximum value is " + max);
因為在生成完整列表之前無法獲得最小值或最大值,所以該代碼需要在for循環之外,並且您需要將所有隨機值放在集合中以便它們保持不變。 我認為你的問題在於,當你必須首先擁有一個完全形成的集合時,嘗試以流媒體方式進行。
此外,如果要彈出消息框,則在Visual Studio中創建項目時,應該創建Windows窗體應用程序而不是控制台應用程序。 如果您正在使用winforms,您可以只使用MessageBox.Show("My message here")
但如果您已經構建了一個控制台應用程序,則必須包含一堆程序集才能使其工作。
如果你關心的只是一系列數字的最小值和最大值,而不存儲它們中的每一個,你可以只保持兩個變量的當前最大值和最小值,並在循環進行時更新它們。 在最后一次迭代之后,你將獲得整個批次的最大值和最小值:
static void Main(string[] args)
{
Random random = new Random();
int maxNumber;
int minNumber;
maxNumber = minNumber = random.Next(1000); // Assign both variables at once
for (int i = 0; i < 11; i++)
{
int randomNumber = random.Next(1000);
Console.WriteLine(randomNumber);
if (randomNumber > maxNumber) maxNumber = randomNumber;
if (randomNumber < minNumber) minNumber = randomNumber;
}
Console.WriteLine("Maximum: {0}", maxNumber);
Console.WriteLine("Minimum: {0}", minNumber);
Console.ReadKey(true);
}
要在控制台應用程序中顯示消息框,您需要設置對System.Windows.Forms的引用,並在正確的using語句之后:
Random random = new Random();
List<int> randomNumbers = new List<int>();
for (int i = 0; i < 11; i++)
{
randomNumbers.Add(random.Next(100000));//or set to your desired value
}
//Console.WriteLine("Biggest number is {0} -smallest is {1}", randomNumbers.Max(), randomNumbers.Min());
MessageBox.Show("Biggest number is " + randomNumbers.Max().ToString() + "- smallest is " + randomNumbers.Min().ToString() );
您只需收集所有隨機數以從中選擇最小值和最大值。 您也在使用控制台應用程序和可能在Windows窗體中使用的MessageBox
,但如果要在控制台應用程序中使用它,則需要導入using System.Windows.Forms;
庫只能通過選擇使用它:
Project->Add Reference
從左側選擇
FrameWork
然后選擇
System.Windows.Forms
然后在代碼的開頭寫:
using System.Windows.Forms;
最后點擊
OK
然后你在Main中的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace MyProgram
{
class Program
{
static void Main(string[] args)
{
Random random = new Random();
List<int> randomNumbers= new List<int>();
for (int i = 0; i < 11; i++)
{
randomNumbers.Add(random.Next(1000));
}
MessageBox.Show(string.Format("The minimum is: {0}\nThe maximum is: {1}", randomNumbers.Min(), randomNumbers.Max()), "Result");
}
}
}
另一種方法是使用Linq的Aggregate
方法:
var random = new Random();
var limits =
Enumerable.Range(0, 11)
.Select(x => random.Next(1000))
.Aggregate(new { min = int.MaxValue, max = int.MinValue },
(a, x) => new
{
min = Math.Min(a.min, x),
max = Math.Max(a.max, x)
});
MessageBox.Show(string.Format("Min: {0}, Max: {1}", limits.min, limits.max));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.