2014-01-29 26 views
0

我只是问是否有一个简单的方法来做到这一点。 即用一个具有不同值的单元替换两个连续的单元。用一个单元替换阵列中的两个连续单元

对于离: - 如果我的数组= [0,3,1,2,3,4],并且我想用值5 成为这样数组= [5来代替索引0和1, 1,2,3,4]

你们可以建议一些简单的方法来做到这一点。 我做这个代码,但也有一些是错误的:

int J = 0; 
      if (max != 1) 
      { 
       for (int iii = 0; iii < output.Length -1; iii++) 
        { 
         if ((output[iii] == imax) && (output[iii + 1] == jmax)) 
         { 
          temp = temp + 1; 
          output[J] = Convert.ToByte(temp); 
          J = J + 1; 
          iii = iii + 1; 
         } 
         else 
         { 
          output[J] = output[iii]; 
          J = J + 1; 
          output[J] = output[iii + 1]; 
         } 

        } 
      } 

,因为当我要检查的连续2个指标,我想将它们传递给花药2指数

+1

简单的方法是使用一个列表,而不是一个数组,那么你可以删除项目以及替换它们 –

回答

0

如果你关心性能,你想这样做可能会损害perfor少操作曼斯。试试这个扩展方法:

public static int[] ReplaceConsecutiveCells(this int[] array, int startIndex, int replaceWith) 
{ 
    int[] targetArray = new int[array.Length - 1]; 

    for (int i = 0; i < array.Length; i++) 
    { 
     if (i < startIndex) 
     { 
      targetArray[i] = array[i]; 
     } 
     else if (i == startIndex) 
     { 
      targetArray[i] = replaceWith; 
     } 
     else if (i == startIndex + 1) 
     { 
      // no action 
     } 
     else 
     { 
      targetArray[i - 1] = array[i]; 
     } 
    } 

    return targetArray; 
} 

使用方法如下:

array = array.ReplaceConsecutiveCells(0, 5); 
0
int[] array = new int[] { 0, 3, 1, 2, 3, 4 }; 
List<int> list = array.ToList(); 
list.RemoveRange(0,2); 
list.Insert(0, 5); 
array = list.ToArray(); 
0

又一变

int[] array = new int[] { 0, 3, 1, 2, 3, 4 }; 
Array.Reverse(array); 
Array.Resize(ref array, 5); 
Array.Reverse(array); 
array[0] = 5; 
0
do 
     { 
      RNG_NXT =RNG +1; 
     for (int iii = 0; iii <Nold -1; iii++) 
        { 
         if ((output[iii] == imax) && (output[iii + 1] == jmax)) 
         { 
          output[J] = Convert.ToByte(RNG_NXT); 
          J = J + 1; 
          iii = iii + 1; 
         } 
         else 
         { 
          output[J] = output[iii]; 
          J = J + 1; 
         } 
        } 
      RNG++;    
     } 
while(RNG < RNG_MAX) ; 
+1

这仅仅是一个代码从你的问题,不变。你为什么把这个作为答案? – hvd

+0

对不起,我,米只是这样做,而在每一次循环,我发现两个连续的数字与最重复 – Layan

+0

啊,好吧。在这种情况下,我不明白这是如何回答你的问题的,但我认为这可能是因为我很难弄清楚你的问题是什么。更重要的是,我也不知道这个循环是如何终止的,除非它永远不会循环:在循环过程中'RNG'和'RNG_MAX'都不会改变,所以如果条件是真的,它会一直持续是真实的。 – hvd

相关问题