console.writeLine(matrix) bidimensional array String[,]

本文关键字:String array bidimensional writeLine matrix console | 更新日期: 2023-09-27 18:35:39

我构建了一个矩阵,

如下所示
00   node1 node2 node3
node1  0    1     0
node2  1    1     1
node3  0    0     0

我决定用String[,] matrix来做.我希望下面的代码能给我想要的矩阵,但是当我编译它时,它只打印出"节点i"和"节点j"其他任何东西。

public AdjMatrix(ArrayList nodeList,ArrayList linkList)
        {
            String[,] matrix = new String [nodeList.Count,nodeList.Count];
            ArrayList result = new ArrayList();
            using (StreamWriter writer = new StreamWriter("C:''Users''Martina''Desktop''matrix.txt"))
            {
                Console.SetOut(writer);

                //inizializzazione dei nomi delle classi
                for (int i = 0; i < nodeList.Count; i++)
                {
                    if (i == 0)
                    {
                        matrix[i,0]=("");
                    }
                    else
                    {
                        foreach (EA.Element node in nodeList)
                        {
                            matrix[i,0] = node.Name;
                        }
                        Console.WriteLine("la riga della matrice" + matrix[i,0]);
                    }
                }
                 //inizializzazione dei valori della matrice
                for (int j = 0; j < nodeList.Count; j++)
                 {
                    if (j==0)
                    {
                        matrix[0,j]=("");
                    }
                    else
                    {
                        foreach (EA.Element node in nodeList)
                        {
                            matrix[0,j] = node.Name;
                        }
                        Console.WriteLine("la riga della matrice" + matrix[0,j]);
                    }
                }

                //definizione dell'esistenza del link
                foreach (EA.Connector link in linkList)
                {
                    for (int i = 1; i < nodeList.Count; i++)
                    {
                        int supplier = link.SupplierID;
                        int client = link.ClientID;
                        String supplierNode = modelRepository.GetElementByID(supplier).Name;
                        String clientNode = modelRepository.GetElementByID(client).Name;

                        if (supplierNode.Equals((String)matrix[i,0]))
                        {
                            for (int j = 1; j < nodeList.Count; j++)
                            {
                                if (clientNode.Equals((String)matrix[0,j]))
                                {
                                    matrix[i,j] = "1";
                                }
                                else
                                {
                                    matrix[i,j] = "0";
                                }
                            }
                        }
                    }
                }

               Console.WriteLine("matrix : ");
            for (int i = 0; i < nodeList.Count; i++)
            {
                for (int j = 0; j < nodeList.Count; j++)
                    Console.Write(matrix[i, j] + "'t");
                    Console.WriteLine();
            }
            }
         }
为什么它

至少没有打印我节点的名称,我找不到错误,为什么它不起作用。谢谢你的帮助。

nodeList 中,我获取字符串节点的名称,linkList 包含连接器元素,因此我可以将客户端元素和供应商元素与我的节点进行比较。

console.writeLine(matrix) bidimensional array String[,]

好的,再次浏览您的代码,我刚刚意识到您所做的和您想做的是两件不同的事情。你想要的是一个数组数组。你拥有的是一个数组的数组数组...

矩阵是一个 ArrayList,对于每个节点,您向矩阵中添加一个新的 ArrayList。此时,您已经拥有 2 维。在为每个节点添加一个 ArrayList 到矩阵时,您还会浏览新创建的 ArrayList,并为每个节点添加另一个 ArrayList。所以最后你有 (n2)+1 个 ArrayLists,其中 n 是节点数。而且我很确定你不想要那个:-)

同样,我建议您坚持使用简单的 bool[][] 并从字典中获取节点名称。或者,如果布尔值不能剪切它,则可以使用 float[][] 作为加权连接矩阵。

因此,如果我理解正确,您有一个包含ArrayLists的ArrayList。将矩阵 [i] 的内容转换为字符串不起作用。尝试将其更改为 matrix[i][0] 对于初学者,并告诉会发生什么。