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;
}