使用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];
}
}
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());