无论我如何编写这个脚本,Powershel都不会编写我应该编写的数组,它会打印一个单行数组。
PS C:\Windows\system32> $matriz = @(
(1,2,3,4),
(5,6,7,8)
)
Write-Host $matriz
1 2 3 4 5 6 7 8
不是这样的:
PS C:\Windows\system32> $matriz = ,@((1,2,3,4),
(5,6,7,8))
Write-Host $matriz
1 2 3 4 5 6 7 8
如何将其打印为真正的二维矩阵?
并且...我正在尝试使用Get-Random
填充此相同的数组,但它显示以下错误:Failed add the number where you want (i.e. matriz [0,1]) because it doesn't support fractions
&lt; - 不是真实的消息,但你们不会理解葡萄牙语:/ < / p>
*更新:
我想把它打印成这样:
1 2 3 4
5 6 7 8
'因为单行的东西不会帮助我看看我的矩阵是否正确,作为单行我永远不会知道数组的对角线是什么。
答案 0 :(得分:2)
因此,当您输出数组时,PowerShell默认输出新行上的每个数组项。这是获得我认为你想要的一种方式:
Write-Host $matriz | %{$_ -join ' '}
所以你告诉它继续使用外部数组的新行,但对于每个内部数组,使用空格连接它们。
答案 1 :(得分:0)
这使用了一个技巧但会使它打印成两行:
$matriz = ,@(1,2,3,4)+,@(5,6,7,8)
$matriz | % {Write-Host $_ }
输出是:
1 2 3 4
5 6 7 8
每个项目可以单独引用为$matriz[x][y]
,其中x,y是二维数组的大小(As Bacon说)。
答案 2 :(得分:0)
这就是二维数组的打印方式。如果您想以其他方式显示它,您需要自己格式化:
$matriz = @((1,2,3,4),(5,6,7,8))
$matriz | ForEach-Object {
$_ | ForEach-Object {
Write-Host ("{0,5}" -f $_) -NoNewline;
}
Write-Host;
}
您还没有正确调用矩阵元素。例如,$matriz[1,1]
实际上意味着(,$matriz[1] + ,$matriz[1])
。这是因为1,1
本身就是一个数组。
正确查找单个元素需要做的是使用多个索引:$matriz[1][1]