使用循环将表内容复制到另一个

时间:2019-06-02 17:33:20

标签: c# loops

我刚接触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();

2 个答案:

答案 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();