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 包含连接器元素,因此我可以将客户端元素和供应商元素与我的节点进行比较。
好的,再次浏览您的代码,我刚刚意识到您所做的和您想做的是两件不同的事情。你想要的是一个数组数组。你拥有的是一个数组的数组数组...
矩阵是一个 ArrayList,对于每个节点,您向矩阵中添加一个新的 ArrayList。此时,您已经拥有 2 维。在为每个节点添加一个 ArrayList 到矩阵时,您还会浏览新创建的 ArrayList,并为每个节点添加另一个 ArrayList。所以最后你有 (n2)+1 个 ArrayLists,其中 n 是节点数。而且我很确定你不想要那个:-)
同样,我建议您坚持使用简单的 bool[][] 并从字典中获取节点名称。或者,如果布尔值不能剪切它,则可以使用 float[][] 作为加权连接矩阵。
因此,如果我理解正确,您有一个包含ArrayLists的ArrayList。将矩阵 [i] 的内容转换为字符串不起作用。尝试将其更改为 matrix[i][0] 对于初学者,并告诉会发生什么。