我的主要目標是創建一個方法,可以在其中輸入一個數字,一個方法會從中選擇一些其他數字(根據目的)并將它們組合成陣列。
我需要這個 Array 和它的值是靈活的,所以我決定創建一個新變數,它在Container()和Main()方法的范圍內。然后我將Container()中的值分配給optainer,但它不起作用(foreach不顯示Container()中的所有數字,僅顯示第一個數字)。我的問題在哪里?
static int[] optainer;
static void Container()
{
uint numb = uint.Parse(Console.ReadLine());
for (int i = 1000000; i >= 1; i--)
{
if (numb % i == 0)
{
optainer = new int[] { i };
}
}
}
static void Main(string[] args)
{
Console.WriteLine("Enter num. from 1 to 1 000 000");
Container();
foreach (int iw in optainer)
{
Console.WriteLine(iw);
}
// Expected: few numbers according to the condition; Real result: 1
```
uj5u.com熱心網友回復:
您在 optainer 中始終只有一個元素,這一行是
optainer = new int[] { i };您始終創建一個只有一項且最后一項始終為 1 的新陣列的錯誤。
你可以這樣改變
static List<int> optainer = new List<int>();
static void Main(string[] args)
{
Console.WriteLine("Enter num. from 1 to 1 000 000");
Container();
foreach (int iw in optainer)
{
Console.WriteLine(iw);
}
}
static void Container()
{
uint numb = uint.Parse(Console.ReadLine());
for (int i = 1000000; i >= 1; i--)
{
if (numb % i == 0)
{
optainer.Add(i);
}
}
}
uj5u.com熱心網友回復:
我確信有一種更性感的方法可以做到這一點,但試試這個:
static void Container()
{
uint numb = uint.Parse(Console.ReadLine());
for (int i = 1000000; i >= 1; i--)
{
if (numb % i == 0)
{
int size = optainer.Length 1;
Array.Resize(ref optainer, size);
optainer[size - 1] = i;
}
}
}
uj5u.com熱心網友回復:
每次寫
optainer = new int[] { i };
您創建一個新串列(覆寫舊串列),您必須附加到陣列中。因此,您需要知道陣列的大小。為了節省記憶體,您應該使用更動態的東西,例如串列。
以下是如何添加值的說明: 向 C# 陣列添加值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467272.html
