从数组c#输出一定数量的元素

时间:2017-01-19 06:34:46

标签: c# arrays

我怎么能这样做,比方说,例如在控制台上每行输出3个数组元素?并为整个阵列做这个?是否有类似Java Scanner的东西可以帮助我?

4 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用for循环。您可以使用以下内容:

// input already defined as array
for (int i = 0; i < input.Length; i += 3) {
    Console.WriteLine(input[i] + ' ' + input[i + 1] + ' ' + input [i + 2]);
}

这将要求您的数组的长度是三的倍数;如果不是这种情况,您需要添加某种逻辑检查,以确保数组中存在input[i + 1]input[i + 2]

虽然有些冗长的解决方案可能会如此:

for (int i = 0; i < input.Length; i += 3) {
  if (i + 2 >= input.length) {
      Console.WriteLine(input[i] + ' ' + input[i + 1] + ' ' + input[i + 2]);
  } else if (input[i + 1] >= input.length) {
      Console.WriteLine(input[i] + ' ' + input[i + 1]);
  } else {
      Console.WriteLine(input[i]);
  }
}

答案 1 :(得分:1)

Linq 解决方案:

  int[] data = Enumerable.Range(1, 20).ToArray();

  int groupSize = 3;

  var result = Enumerable
    .Range(0, data.Length / groupSize + 
             (data.Length % groupSize == 0 ? 0 : 1))
    .Select(index => data.Skip(index * groupSize).Take(groupSize))
    .Select(items => string.Join(", ", items));

  Console.Write(string.Join(Environment.NewLine, result));

输出:

1, 2, 3
4, 5, 6
7, 8, 9
10, 11, 12
13, 14, 15
16, 17, 18
19, 20

答案 2 :(得分:1)

arrayElements作为输入,然后您可以将它们分组为指定大小的块并从每个组中收集值并显示它:

List<int> arrayElements = new List<int>() { 1,5,2,3,6,4,87,96,54,5,4,5,6,2,5,9,5,5,5,6,2,45,6};

int chunkSize = 3;
var results = arrayElements.Select((x, i) => new { Key = i / chunkSize , Value = x })
                           .GroupBy(x => x.Key, x => x.Value)
                           .Select(x=>String.Join("  ",x.ToList()))
                           .ToList();

foreach (string chunk in results)
{
    Console.WriteLine(chunk);
}

Working Example

答案 3 :(得分:1)

你可以做这样的事情。它将在一行中打印元素,并在连续打印三个元素后转到新行。

    for(int i=0; i<arr.Length; ++i) {
        Console.Write(arr[i]+" ");

        if((i+1)%3==0){
            Console.WriteLine("");      
        }
    }