如何将方法数组中的新值赋给变量?
How to assign a new value from Method's Array to the Variable?
我的主要目标是创建一个方法,可以在其中输入一个数字,方法将从中选择一些其他数字(根据目的)并将它们组合在数组中。
我需要这个数组及其值是灵活的,所以我决定创建一个新变量,它在 Container() 和 [=15= 的范围内]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
```
你在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);
}
}
}
我敢肯定有更性感的方式来做到这一点,但试试这个:
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;
}
}
}
每次写
optainer = new int[] { i };
你创建了一个新的列表(你覆盖了旧的)你必须追加
到阵列。因此,您需要知道数组的大小。
为了节省内存,您应该使用更动态的东西,例如列表。
以下是如何添加值的说明:
Adding values to a C# array
我的主要目标是创建一个方法,可以在其中输入一个数字,方法将从中选择一些其他数字(根据目的)并将它们组合在数组中。
我需要这个数组及其值是灵活的,所以我决定创建一个新变量,它在 Container() 和 [=15= 的范围内]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
```
你在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);
}
}
}
我敢肯定有更性感的方式来做到这一点,但试试这个:
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;
}
}
}
每次写
optainer = new int[] { i };
你创建了一个新的列表(你覆盖了旧的)你必须追加 到阵列。因此,您需要知道数组的大小。 为了节省内存,您应该使用更动态的东西,例如列表。
以下是如何添加值的说明: Adding values to a C# array