这是我的代码:
clear-host
function isNumeric ($x) {
try {
0 + $x | Out-Null
return $true
} catch {
return $false
}
}
function output-file ($ave, $high, $low, $date)
{
write-output "Programer: Oday Sawaqed"
write-output "Class: CIS 124"
write-output "PowerShell Assignmnent"
write-output ""
Write-output ""
write-output " Current Date Average Highest Lowest"
write-output " $date $ave $high $low "
}
$array = @()
$hold
$n = 1
do {
$hold = read-host "number $n"
if (isNumeric $hold -eq $true){
if (999 -ne $hold) {
$array += $hold
$n = $n + 1
}
else
{
clear-host
write-host "Thank you."
write-host "The numbers you entered are:" $array
write-host "Please select a file name to save the output:"
$fileName = Read-host
$date = get-date -format "dddd, MMMM d, yyyy"
$array = $array | Sort-Object
$ave =
$high = $array | Select-Object -last 1
$low = $array | Select-Object -first 1
output-file $ave $high $low $date | Out-File c:\$fileName.txt
}
}
else {
write-host "Please enter a numeric value"
}
}
while (999 -ne $hold)
现在代码工作正常,我只是无法弄清楚如何将数组中的值相加以计算平均值。有人可以帮助我或给我一个提示! 我知道我需要将值加在一起,然后除以$ n,我只是不知道如何添加值。
答案 0 :(得分:24)
要计算平均值,您可以使用Measure-Object
Cmdlet:
($array | Measure-Object -Average).average
答案 1 :(得分:2)
我found添加的一种方式是这样的:
$sum = $array -join '+'
Invoke-Expression $sum
$sum
的输出只是添加“+”,然后invoke-expression
实际上会为你做数学运算。所以你的输出看起来像是:
$sum
1+2+3+4+5+6+7+8+9
Invoke-Expression $sum
45