2013-07-09 17 views
0

我有一個隨機數字發生器和一個任務,我們必須採取隨機數字,並在最高和最低的數字的消息框輸出。我想我需要使用if/else,但有點困惑。我以現在的代碼如下所示:(C#)如何從我的隨機數生成器中獲取數字並在消息框中輸出最高和最低的數字?

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); 
     }   
    } 
} 
+0

提示:查看在System.Math類。 –

+0

[如何返回C#中隨機數的最大和最小值]的可能重複(http://stackoverflow.com/questions/17459288/how-to-return-a-max-and-min-of-a -random-number -gen-in-c-sharp) –

回答

1

如果你把所有的數字集合中,你可以使用LINQ到對象擴展方法MinMax

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); 

因爲你不能得到min或最大值,直到您生成完整列表,該代碼需要在for循環之外,並且您需要將所有隨機值放入集合中,以便它們保持不變。我認爲你的問題在於當你首先要有一個完整的集合時,試圖以流媒體的方式來完成這一切。另外,如果你想彈出一個消息框,那麼你應該在Visual Studio中創建項目時創建一個Windows窗體應用程序而不是控制檯應用程序。如果你正在使用winforms,你可以做MessageBox.Show("My message here"),但如果你已經構建了一個控制檯應用程序,你將不得不包含一堆程序集來實現它。

+0

我們現在只使用控制檯應用程序。消息框不是太棘手,我不認爲。 – secretlygayfrog

+0

@secretlygayfrog它不是,但它不適用於控制檯應用程序。在這種情況下,您只想使用'Console.WriteLine'輸出。這只是你使用的語言,使得它聽起來像你想使用一個'MessageBox'。 – evanmcdonnal

0

要顯示在控制檯應用程序,你需要設置參考System.Windows.Forms的這些URL和正確使用的語句再經過:

  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()); 
1

如果所有你關心的是一個公正的最小和最大一系列數字,不存儲它們中的每一個,只需保存兩個變量的當前最大值和最小值,並在循環過程中更新它們。最終的迭代後,你會得到一大堆的最大值和最小值:

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); 
} 
0

你只需要收集所有的隨機數,選擇從他們的最小值和最大值。還您使用的可能是在Windows窗體使用控制檯應用程序和MessageBox但如果你想在控制檯應用程序使用它,你需要導入using System.Windows.Forms;庫只是選擇使用它:

Project->Add Reference 

從左側選擇

FrameWork 

,然後選擇

System.Windows.Forms 

,然後在你的代碼寫的開頭:

using System.Windows.Forms; 

最後點擊

OK 

,然後你的代碼在主:

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"); 

     } 
    } 
} 
0

另一種方法是使用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)); 
相關問題