使用For循环+If语句-C#从数组中删除元素

本文关键字:数组 删除 元素 -C# For 循环 +If 语句 使用 | 更新日期: 2023-09-27 18:15:23

我有一个数组,TempArray[]={1,3,-1,5,7,-1,4,10,9,-1}

我想从这个数组中删除每一个-1,并将剩余的数组复制到一个名为Original的新数组中,该数组应该将数字输出为1,3,5,7,4,10,9

我只能在for循环中使用if语句!

到目前为止,这就是我所拥有的,但我一直收到一条错误消息,系统。IndexOutOfRangeException

    for (int i = 0; i < TempArray.Length; i++)
        {
            if (TempArray[i] != -1)
            {
                //error occurs at this line
                //My attempt is to set the new array, Original[i] equal to TempArray[i] only where the values are not -1.
                TempArray[i] = Original[i];
            }
        }

使用For循环+If语句-C#从数组中删除元素

If只能在for循环中使用If语句。这看起来像是一个学校项目。首先,计算数组中有多少非负数。创建具有该长度的新数组并填充该数组。

int[] TempArray = new int[] {1,3,-1,5,7,-1,4,10,9,-1};
int[] Original ; 
int countNonNegative=0;
 for (int i = 0; i < TempArray.Length; i++)
{
            if (TempArray[i] != -1)
            {
                countNonNegative++;
            }
 }
    Original = new int[countNonNegative];
    int index=0;
    for (int i = 0; i < TempArray.Length; i++)
    {
            if (TempArray[i] != -1)
            {
                Original[index] = TempArray[i];
                index++;
            }
    }
    Console.WriteLine("Original Length = "+Original.Length);
 using System.Linq;
 int[] withoutNegativeOnes = myArray
   .Where(a => a != -1)
   .ToArray();
var Original = new int[TempArray.Length];
var originalCounter = 0;
for (int i = 0; i < TempArray.Length; i++)
{
    if (TempArray[i] != -1)
    {
        Original[originalCounter++] = TempArray[i];
    }
}

现在Original可能在末尾包含空格,但您拥有所有不是-1的元素。您可以使用以下代码来迭代这些值:

for (int i = 0; i < originalCounter; i++)
{
    Console.WriteLine(Original[i]);
}

这是因为originalCounter有最后一个索引值,而这些值不是从TempArray的迭代中填充的。

试试这个

int[] TempArray = { 1, 3, -1, 5, 7, -1, 4, 10, 9, -1 };
int[] original = TempArray.Where(i => i != -1).ToArray();
foreach(int i in original)
   Console.WriteLine(i.ToString());