【问题标题】:Divide two-dimensional array by 2 using Linq and then print it [closed]使用Linq将二维数组除以2然后打印它[关闭]
【发布时间】:2014-08-06 12:22:53
【问题描述】:

我有一个任务:

[+]创建 4x4 数组,用随机 int 值填充,每列从 min 到 max 排序,打印这个数组。
[+]创建一个将这个数组作为传入参数的方法,并将它的每个成员加倍,并打印它。
[-]创建一个将这个数组作为传入参数并将其除以 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 时遇到了麻烦。你能帮帮我吗?

【问题讨论】:

    标签: c# arrays linq


    【解决方案1】:

    数组有两种:多维数组(一个数组可以有多个维度)和一维数组(一个数组可以有一个维度)。

    由于 LINQ 仅适用于一维数组,因此您必须将二维数组建模为元素为一维数组的一维数组。所以你需要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();
    

    请注意,这会创建一个 新 数组,而不是修改您现有的数组。

    【讨论】:

    • 我已经排序了,使用 Array.Sort();但谢谢。
    • 哇)非常感谢!它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多