获取锯齿状阵列中的列长度

时间:2016-12-08 21:34:38

标签: c#

我在锯齿状数组中提取列长度时出现问题,如下所示:

jagged array

如何获得第2列(索引1和长度8)或第5列(索引4和长度4)的长度?与行相同。我需要指定行的长度。

4 个答案:

答案 0 :(得分:2)

您应该可以非常轻松地获得行长度,因为它只是数组数组中单个数组的长度。例如:arrays[3].length为8。

列是不同的,因为我们需要有关每个数组的信息。我们可以遍历,计算长度大于您要查找的列数的数组的数量。

public static int getColumnLength(int[][] arrays, int columnNumber) {
  int count = 0;
  for(int i = 0; i < arrays.length; i++) {
    if (arrays[1].length > columnNumber) {
      count++;
    }
  }
}

答案 1 :(得分:2)

方法getColumnLength只是遍历每一行并检查该行是否足够长以使列在其中。如果是,则将其添加到具有该列的行数。

public class Program {
    public static void Main(string[] args) {
        int[][] jaggedArray = {
            new int[] {1,3,5,7,9},
            new int[] {0,2,4,6},
            new int[] {11,22} 
        };

        Console.WriteLine(getColumnLength(jaggedArray, 4));

        Console.WriteLine("Press any key to continue. . .");
        Console.ReadKey();
    }

    private static int getColumnLength(int[][] jaggedArray, int columnIndex) {
        int count = 0;
        foreach (int[] row in jaggedArray) {
            if (columnIndex < row.Length) count++;
        }
        return count;
    }
}

答案 2 :(得分:1)

使用LINQ!

public static int GetColumnSize<T>(this T[][] array, int columnNumber) =>
    array
    .Where(subArray => subArray.Length > columnNumber)
    .Count();

public static int GetRowSize<T>(this T[][] array, int rowNumber) =>
    (array.Length <= rowNumber)
        ? array[rowNumber].Length
        : 0;

答案 3 :(得分:-1)

我的任务是溢出列,例如,如果我在位置[2] [2](编号9),当用户输入“上4步”时,我需要从列的另一侧输入转到图像上的元素[4] [2](数字15)。 我有以下溢出方法:

static int index(int i, int n)
{
   return i % n < 0 ? n + (i % n) : i % n;
}

其中i是当前位置,n是列/行的长度