Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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#_Multidimensional Array_Jagged Arrays - Fatal编程技术网

C# 如何在数组[][,]和[,][]中输入和输出值(交错数组和多维数组的混合)

C# 如何在数组[][,]和[,][]中输入和输出值(交错数组和多维数组的混合),c#,multidimensional-array,jagged-arrays,C#,Multidimensional Array,Jagged Arrays,我试图改进如何在多维数组中查找项的代码,因为我希望在增加数据量时避免将来可能出现的性能问题。我是一个编程新手,所以有很多东西我不知道。我一直在搜索多维数组、锯齿数组、排序等主题。我想我需要使用锯齿数组,因为我需要排序,以便找到第三大和6.5大的数字。但我意识到,我必须在示例或链接到更多信息方面寻求一些帮助,因为我在定义锯齿数组方面遇到了问题。我将尝试隔离每个问题,因为我认为对于比我更熟悉阵列的人来说,这些事情可能很容易解决。根据需要,应该可以混合使用锯齿数组和多维数组 下面是[][]的示例,它正

我试图改进如何在多维数组中查找项的代码,因为我希望在增加数据量时避免将来可能出现的性能问题。我是一个编程新手,所以有很多东西我不知道。我一直在搜索多维数组、锯齿数组、排序等主题。我想我需要使用锯齿数组,因为我需要排序,以便找到第三大和6.5大的数字。但我意识到,我必须在示例或链接到更多信息方面寻求一些帮助,因为我在定义锯齿数组方面遇到了问题。我将尝试隔离每个问题,因为我认为对于比我更熟悉阵列的人来说,这些事情可能很容易解决。根据需要,应该可以混合使用锯齿数组和多维数组

下面是[][]的示例,它正在工作

using System;
using System.Collections;
namespace SortJaggedArray
{
class host
{
    [STAThread]
    static void Main(string[] args)
    {
        int[][] arr = new int[2][];
        arr[0] = new int[3] {1,5,3};
        arr[1] = new int[4] {4,2,8,6};

        // Write out a header for the output.
        Console.WriteLine("Array - Unsorted\n");

        for (int i = 0; i < arr.Length; i++)
        {
             System.Console.WriteLine("Outer array " + i);

             for (int j = 0; j < arr[i].Length; j++)
             {
                  System.Console.Write(arr[i][j] + " ");
             }
             System.Console.WriteLine(" ");
             System.Console.WriteLine(" ");
        }
        Console.ReadLine();
    }
}
}

//Output:
//Outer array 0
//1 5 3

//Outer array 1
//4 2 8 6
问题1: 如何编写WriteLine/for/foreach以查看锯齿数组[][,]的内容

问题2:
我想将其更改为[,][],但在如何在这种锯齿状数组中输入/输出数据方面遇到了问题。如何输入数据?如何编写eline/for/forearch以查看锯齿数组[,][]的内容?

您需要迭代每个维度:

for(int i=0; i<arr.Length; i++){
    Console.WriteLine($"Nr {i}:");
    for(int j=0;j<arr[i].GetLength(0);j++){
        for(int k=0;k<arr[i].GetLength(1);k++){
            Console.Write($"{arr[i][j,k]} ");
        }
        Console.WriteLine();
    }
    Console.WriteLine();
}

如果其他读者也有同样的问题,我想添加代码示例,说明Magnetron的示例如何帮助我解决array[,][]的相同问题

using System;
using System.Collections;
namespace SortJaggedArray
{
    class host
    {
        [STAThread]
        static void Main(string[] args)
        {
            int[,][] arr = new int[2,3][];
            arr[0,0] = new int[3] { 1, 5, 3 };
            arr[0,1] = new int[4] { 4, 2, 8, 6 };
            arr[0,2] = new int[2] { 2, 8 };
            arr[1,0] = new int[2] { 7, 5 };
            arr[1,1] = new int[5] { 8, 7, 5, 9, 2 };
            arr[1,2] = new int[2] { 1, 4};

            // Write out a header for the output.
            Console.WriteLine("Array - Unsorted\n");

            for (int i = 0; i < arr.GetLength(0); i++)
            {
                Console.WriteLine($"Nr {i}:");
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    for (int k = 0; k < arr[i,j].Length; k++)
                    {
                        Console.Write($"{arr[i,j][k]} ");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

//Output:
//Nr 0:
//1 5 3
//4 2 8 6
//2 8

//Nr 1:
//7 5
//8 7 5 9 2
//1 4
使用系统;
使用系统集合;
名称空间SortJaggedArray
{
班主任
{
[状态线程]
静态void Main(字符串[]参数)
{
int[,][]arr=新int[2,3][];
arr[0,0]=newint[3]{1,5,3};
arr[0,1]=newint[4]{4,2,8,6};
arr[0,2]=newint[2]{2,8};
arr[1,0]=newint[2]{7,5};
arr[1,1]=newint[5]{8,7,5,9,2};
arr[1,2]=newint[2]{1,4};
//写出输出的标题。
Console.WriteLine(“数组-未排序\n”);
for(int i=0;i
非常感谢磁控管。这解决了我的问题!您在[][,]上的输入也帮助我解决了[],[]的同样问题,这几乎总是缺少类的迹象,在这种情况下,您最好创建一个新的类类型并将实例放入列表中;混合使用不规则的和多维的矩形阵列几乎总是错误的。更好的方法是在一个或多个泛型类中清楚地描述正在操作的数据的语义,然后将它们组合起来。关于为什么做你正在做的事情会让人困惑的更多想法,请参阅我2009年关于这个主题的文章:
Nr 0:
1 3 
5 2 
3 9 

Nr 1:
4 1 
2 7 
8 5 
6 3 
using System;
using System.Collections;
namespace SortJaggedArray
{
    class host
    {
        [STAThread]
        static void Main(string[] args)
        {
            int[,][] arr = new int[2,3][];
            arr[0,0] = new int[3] { 1, 5, 3 };
            arr[0,1] = new int[4] { 4, 2, 8, 6 };
            arr[0,2] = new int[2] { 2, 8 };
            arr[1,0] = new int[2] { 7, 5 };
            arr[1,1] = new int[5] { 8, 7, 5, 9, 2 };
            arr[1,2] = new int[2] { 1, 4};

            // Write out a header for the output.
            Console.WriteLine("Array - Unsorted\n");

            for (int i = 0; i < arr.GetLength(0); i++)
            {
                Console.WriteLine($"Nr {i}:");
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    for (int k = 0; k < arr[i,j].Length; k++)
                    {
                        Console.Write($"{arr[i,j][k]} ");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

//Output:
//Nr 0:
//1 5 3
//4 2 8 6
//2 8

//Nr 1:
//7 5
//8 7 5 9 2
//1 4