對於學習c#的學校項目,我製作了一個數據收集控制檯應用程序,它可以保存4個不同位置的浮點條目以及時間/日期,以及記錄條目。我需要使用多維結構數組。查找多維結構數組中的最小值和最大值
我需要一個視圖,顯示值的平均值以及最小值和最大值以及第一個和最後一個日期。我通過計算數值並累計計算得出平均值,但我無法弄清楚如何找到最小值和最大值。
我試過搜索,發現這個頁面:http://www.dotnetperls.com/max 我試圖將這個語法實現到我的代碼無濟於事,因爲它是一個更復雜的數組。
它的工作在我的測試與整數:
class Program
{
static int[][] intarray = new int[4][] { new int[10], new int[10], new int[10], new int[10] };
static void Main(string[] args)
{
intarray[0][0] = 5;
intarray[0][1] = 3;
intarray[0][2] = 10;
intarray[0][3] = 4;
intarray[0][4] = 2;
Console.WriteLine(intarray[0].Max());
Console.ReadLine();
}
}
上面的代碼完全顯示數字10! :)
但是,當我試圖在我與一個結構數組程序來實現這一點,這是行不通的:
class Program
{
static byte location = 0;
static float entriesmin;
static float entriesmax;
static Entry[][] entriesarray = new Entry[4][] { new Entry[10], new Entry[10], new Entry[10], new Entry[10] };
struct Entry
{
public float value;
public string user;
public DateTime datetime;
}
static byte LoopEntries(bool display)
{
float runningtotal = 0;
byte entrycount = 0;
foreach (Entry entry in entriesarray[0])
{
if (entry.user != null)
{
if (display)
{
string ten;
if (entrycount == 9)
{
ten = " #";
}
else
{
ten = " #";
}
Console.WriteLine(ten + (entrycount + 1) + " " + entry.datetime + " " + entry.user + new string(' ', 16 - entry.user.Length) + entry.value);
}
runningtotal += entry.value;
entrycount += 1;
}
}
entriesmin = (entriesarray[location]).value.Min();
entriesmax = (entriesarray[location]).value.Max();
if (entrycount == 0 && display)
{
Console.WriteLine("No entries to show!");
}
return entrycount;
}
我需要在週一交出這個項目!我真的希望有人能幫助我! ;)
我只是試圖找到當前位置的最小值和最大值這由用戶在不同的功能/屏幕中設置。例如[0-3]該位置保存在一個全局變量中,該全局變量定義了我循環的子陣列。我只注意到我的代碼片段中有錯誤.. 'foreach(Entry entry in entriesarray [0])' 應該是: 'foreach(Entry entry in entriesarray [location])' 這就是爲什麼我只有1 foreach循環。 我不明白'float.MaxValue float.MinValue' 代表什麼值? PS:謝謝你的快速反應! – OptimistPrime
@OptimistPrime:好的,那麼你可以使用我的例子中的內部循環。 'float.MaxValue'和'float.MinValue'用於初始化最小可能值和最小可能值。這些將被循環中的第一個值所取代。 – Guffa
完美!是的,當我在第一次運行時調試並查看最小/最大變量中的值時,我發現了它!謝謝你的幫助,非常感謝,它奇妙地工作! :)我可以用DateTime做同樣的事嗎? 另外,你能解釋爲什麼這不起作用: 'entriesmin =(entriesarray [location]).value。MIN(); entriesmax =(entriesarray [location])。value.Max();' – OptimistPrime