You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中将数组数值平均值显示在Windows消息框?

解决PowerShell平均分无法在Windows消息框显示的问题

问题分析

原代码存在以下关键问题,导致无法正常在消息框展示平均分:

  • 未初始化控制输入数量的$Arraysize变量,循环逻辑混乱,无法限制最多输入5个分数
  • 输入验证逻辑失效:正则表达式[0-100]$无法正确匹配0-100的有效分数,且未将输入转换为数值类型,会影响平均分计算的准确性
  • 消息框调用完全错误:错误地将分数列表赋值给MessageBoxButton枚举类型,未使用MessageBox类的Show()方法来展示内容

修正后的完整代码

# 初始化变量:最多允许输入5个有效分数
$maxInputCount = 5
$validInputCount = 0
$StudentMarkList = @()
# 匹配1-3位数字的正则
$numberRegex = '^\d{1,3}$'

do {
    $inputContent = Read-Host "请输入学生分数(0-100)"
    # 验证输入是否为数字,且数值在0-100范围内
    if ($inputContent -match $numberRegex) {
        $mark = [int]$inputContent
        if ($mark -ge 0 -and $mark -le 100) {
            $StudentMarkList += $mark
            $validInputCount++
        } else {
            Write-Host "错误:分数必须在0-100之间,请重新输入"
        }
    } else {
        Write-Host "错误:请输入有效的数字分数"
    }
} while ($validInputCount -lt $maxInputCount)

# 计算并格式化平均分
if ($StudentMarkList.Count -gt 0) {
    $average = ($StudentMarkList | Measure-Object -Average).Average
    $showText = "学生分数平均分:{0:N2}" -f $average
} else {
    $showText = "未输入任何有效分数"
}

# 加载程序集并显示消息框
Add-Type -AssemblyName PresentationCore, PresentationFramework
[System.Windows.MessageBox]::Show($showText, "平均分结果", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information)

关键修正说明

  • 输入控制:用validInputCount跟踪有效输入的数量,无效输入不会占用输入次数,确保能收集到最多5个有效分数
  • 输入验证:先验证输入格式为数字,再转换为整数并检查范围,保证分数的有效性
  • 平均分处理:基于数值类型的分数列表计算平均分,用格式化字符串保留两位小数,提升可读性
  • 消息框调用:使用[System.Windows.MessageBox]::Show()方法,传入要展示的平均分文本、窗口标题、按钮样式和图标,正确完成消息框展示

内容的提问来源于stack exchange,提问作者tsl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:27:22