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

C# 使用循环将表内容复制到另一个,c#,loops,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) { ta

我刚接触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();
int[]tab1={4,6,32,16,5,22,-3,61,11,99};
int[]tab2=新int[tab1.Length];
对于(int i=0;i0)
{
tab2[i]=tab1[i];
}
}
对于(int i=0;i
如果您不知道有多少项是正数(将在选项卡2中),则无法定义第二个数组的大小。因此,您最好使用列表,在那里可以存储所需数量的项目if(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();
int[]tab1={4,6,32,16,5,22,-3,61,11,99};
列表选项卡2=新列表();//因为你不知道有多少项是正面的
for(int i=0;i0)
{
表2.增加(表1[i]);
}
}
对于(int i=0;i
第一个肯定项会使程序进入无限循环

for
循环中的
更改为
if
。在
while
中,您有
tab2[i]=tab1[i],对于每个
i
,它永远不会改变while循环上的条件。因此,对于数组中的每个项,您要么无限次地执行项的赋值,要么从不执行赋值

while
更改为
if
将删除循环(在循环中),并计算循环中单个元素的条件表达式


另一种思考方式是:“对于这些项中的每一项,如果该项为正,我将把它分配给另一个数组”。您在代码中表示的是“对于这些项中的每一项,当该项为正数时,将其分配给另一个数组”,该数组不满足您的要求。

请查看
while(i>0)
i
是否已设置为其他值?似乎您希望
if(tab1[i]>0)
检查该位置的值是否为正值。虽然此代码可以解决问题,但如何以及为什么解决此问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。