我刚接触C#,但是遇到了家庭作业问题。我无法使用循环将表的内容复制到另一个表。我希望它将正数从10个元素的预定义表复制到第二个表中,并在完成后在控制台中显示内容。
int[] tab1 = { 4, 6, 32, 16, 5, 22, -3, 61, 11, 99 };
int[] tab2 = new int[tab1.Length];
for (int i = 0; i < tab2.Length; i++)
{
while(i > 0)
{
tab2[i] = tab1[i];
}
}
for (int i = 0; i < tab2.Length; i++)
{
Console.Write(tab2[i] + ", ");
}
Console.ReadKey();
答案 0 :(得分:1)
第一个为正的项会使您的程序陷入无限循环。
将while
循环内的for
更改为if
。在while
内部,您拥有tab2[i] = tab1[i];
,对于每个i
,它们永远不会更改while循环的条件。因此,对于数组中的每个项目,您要么无限制地执行项目广告分配,要么从不执行分配。
将while
更改为if
会删除循环(在循环中)并评估循环中单个元素的条件表达式。
另一种思考方式是:“对于每个项目,如果该项目为正,我将其分配给另一个数组”。您在代码中表示的是“对于每个项目,当该项目为正数时,将其分配给另一个数组”,这并不能满足您的要求。
答案 1 :(得分:0)
如果您不知道有多少正数(将在tab2中显示),则无法定义第二个数组的大小。因此,最好使用列表,您可以在其中存储所需数量的项目。 如果(tab1 [i]> 0)将检查第一个数组中的项目。
int[] tab1 = { 4, 6, 32, 16, 5, 22, -3, 61, 11, 99 };
List<int> tab2 = new List<int>();// because you dont know how many items positive
for (int i = 0; i < tab1.Length; i++)
{
if (tab1[i] > 0)
{
tab2.Add(tab1[i]);
}
}
for (int i = 0; i < tab2.Count; i++)
{
Console.Write(tab2[i] + ", ");
}
Console.ReadKey();