Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据用户输入将数组划分为二维数组?_C#_Arrays - Fatal编程技术网

C# 如何根据用户输入将数组划分为二维数组?

C# 如何根据用户输入将数组划分为二维数组?,c#,arrays,C#,Arrays,我在大学里做了一个星期的练习,我想不出怎么解决它 该练习由用户编写单词并存储在数组中组成。然后,用户输入一个数字,程序根据用户输入的数字将单词数组分成二维数组 例如:用户编写“汽车”、“卡车”、“摩托车”、“猫”、“狗”、“鸟”。然后放入“3”,程序会这样做: [“汽车”、“卡车”、“摩托车”、“猫”、“狗”、“鸟”]到 [["Car", "Truck", "Motorbike"] ["Cat", "Dog", "Bird"]] 如果用户输入4,则返回值必须为: [["Car", "Truck

我在大学里做了一个星期的练习,我想不出怎么解决它

该练习由用户编写单词并存储在数组中组成。然后,用户输入一个数字,程序根据用户输入的数字将单词数组分成二维数组

例如:用户编写
“汽车”、“卡车”、“摩托车”、“猫”、“狗”、“鸟”
。然后放入
“3”
,程序会这样做:

[“汽车”、“卡车”、“摩托车”、“猫”、“狗”、“鸟”]

[["Car", "Truck", "Motorbike"] ["Cat", "Dog", "Bird"]]
如果用户输入
4
,则返回值必须为:

[["Car", "Truck", "Motorbike", "Cat"] ["Dog", "Bird"]]
编辑:这是代码

using System;
using System.Collections;

namespace probando_separar_arrays {
    class Program {
        static void Main(string[] args) {
            int num, i = 0;
            String pos;
            ArrayList array = new ArrayList();
            do {
                Console.Write("Please write a word: ");
                pos = Console.ReadLine();
                array.Add(pos);
            } while (!int.TryParse(pos, out num));
            Console.WriteLine("The input words are: ");
            while (i < array.Count - 1) {
                Console.WriteLine(array[i]);
                i++;
            }
            /* Here is where I got stuck, cannot find a way to initialize the
             * Bidimensional array
             */
            Console.ReadKey();
        }
    }
}
使用系统;
使用系统集合;
命名空间probando\u separar\u数组{
班级计划{
静态void Main(字符串[]参数){
int num,i=0;
字符串位置;
ArrayList数组=新的ArrayList();
做{
控制台。写(“请写一个字:”);
pos=Console.ReadLine();
数组。添加(pos);
}而(!int.TryParse(pos,out num));
Console.WriteLine(“输入字为:”);
而(i
尝试使用Linq:

收入:

Car, Truck, Motorbike, Cat, Dog, Bird
4 
结果:

[[Car, Truck, Motorbike, Cat] [Dog, Bird]]

下面是一个通用方法,它可以满足您的需要:

public static T[][] SplitArray<T>(T[] array, int size) {
    // calculate how long the resulting array should be.
    var finalArraySize = array.Length / size + 
        (array.Length % size == 0 ? 0 : 1);
    var finalArray = new T[finalArraySize][];
    for (int i = 0 ; i < finalArraySize ; i++) {
        // Skip the elements we already took and take new elements
        var subArray = array.Skip(i * size).Take(size).ToArray(); // Take actually will return the rest of the array instead of throwing an exception when we try to take more than the array's elements
        finalArray[i] = subArray;
    }
    return finalArray;
}
publicstatict[]SplitArray(T[]array,int-size){
//计算结果数组的长度。
var finalArraySize=array.Length/size+
(array.Length%size==0?0:1);
var finalArray=新的T[finalArraySize][];
对于(int i=0;i
您到底被卡在哪里了?这似乎相当于str8向前。发布您尝试过的内容(代码)或精确的问题,而不是整个任务。毕竟,这项任务是为您的实践而存在的,而不是验证其他人的解决方案;)让我们看看你有什么。如果我们替你做家庭作业,对谁都没有帮助。不过,我们可以提供帮助。您可以使用linq方法skip()和take()将数组分解为若干部分。实际上,如果您谈论的是二维数组,那么如果用户输入4,它应该是
[[“Car”、“Truck”、“Motorbike”、“Cat”][“Dog”、“Bird”,null,null]
它只能是
[[“Car”、“Truck”、“Motorbike”、“Cat”][“Dog”、“Bird”]]
如果您谈论的是锯齿状数组。@DanteTheSmith如果您有理由,下面是代码
public static T[][] SplitArray<T>(T[] array, int size) {
    // calculate how long the resulting array should be.
    var finalArraySize = array.Length / size + 
        (array.Length % size == 0 ? 0 : 1);
    var finalArray = new T[finalArraySize][];
    for (int i = 0 ; i < finalArraySize ; i++) {
        // Skip the elements we already took and take new elements
        var subArray = array.Skip(i * size).Take(size).ToArray(); // Take actually will return the rest of the array instead of throwing an exception when we try to take more than the array's elements
        finalArray[i] = subArray;
    }
    return finalArray;
}