使用Linq将二维数组除以2,然后打印它
本文关键字:然后 打印 Linq 二维数组 使用 | 更新日期: 2023-09-27 18:16:34
我有一个任务:
[+]创建4x4数组,填充随机int值,从最小到最大排序每列,打印这个数组。
[+]创建一个方法,将这个数组作为传入参数,并将其中的每个成员加倍,并将其打印出来。
[-]创建一个方法,将这个数组作为传入参数,并将其除以2。使用linq执行此操作,然后打印结果数组。
using System;
using System.Linq;
class Example
{
static void Main()
{
Random random = new Random();
int n = 4;
int[][] arr = new int[4][];
for (int i = 0; i < n; i++)
arr[i] = new int[4];
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
arr[i][j] = random.Next(0, 19);
Console.WriteLine("Generated array: ");
PrintArr(arr);
foreach (int[] mas in arr)
Array.Sort(mas);
Console.WriteLine("'nSorted array: ");
PrintArr(arr);
DoubleIt(arr);
DivideIt(arr);
}
static void PrintArr(int[][] array)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
Console.Write("{0,4}", array[i][j]);
Console.WriteLine();
}
}
static void DoubleIt(int[][] incoming_arr)
{
Console.WriteLine("'nDoubled array:");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
incoming_arr[i][j] *= 2;
Console.Write("{0,4}", incoming_arr[i][j]);
}
Console.WriteLine();
}
}
static void DivideIt(int[][] incoming_arr)
{
Console.WriteLine("'nHere will be division by 2.");
var DividingArr = from arr in incoming_arr
select arr;
}
}
我有麻烦使用linq与二维数组。你能帮我吗?
数组有两种:多维数组(单个数组可以有多个维度)和单维数组(单个数组只有一个维度)。
由于LINQ只适用于一维数组,所以必须将2D数组建模为元素为1D数组的1D数组。所以不是int[4,4]
,而是int[4][4]
。
我建议您创建一个4列的数组,其中每列是一个4行的数组。这将使单独排序列更容易。
下面是如何使用LINQ创建数组的数组:
var rand = new Random();
var array = (from col in Enumerable.Range(0, 4)
select (from row in Enumerable.Range(0, 4)
select rand.Next()).ToArray()).ToArray();
下面是如何使用LINQ对数组的每个元素进行操作(在本例中是除以2):
var half = (from col in array
select (from row in col
select row / 2).ToArray()).ToArray();
注意,这会创建一个新的数组,而不是修改您现有的