首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell Basic

Powershell Basic
EN

Stack Overflow用户
提问于 2022-02-28 01:01:33
回答 1查看 1.2K关注 0票数 2

我必须做一个简单的计算器+-*/在PowerShell上我的编码入门课程。为什么我的变量Valeur1 & Valeur2在整数验证过程中不保持完整?我的4个选项给出了一个随机的答案,并且不记得我的2个Read-Host变量的初始值。

代码语言:javascript
复制
Write-Host "Microsoft Powershell Calculator "

$R = $True
$OK = $True

while ($R -eq $True) {
    do {
        $Valeur1 = [int]::TryParse((Read-Host "Entrez une premiere valeur numerique"), [ref]$OK)
        if (-not $OK) {
            Write-Host ("ERREUR ! Vous devez entrez une valeur numerique")
            $OK = $false
        }
        else{
            $OK = $true    
        }
    } while (-not $OK)

    do {
        $Valeur2 = [int]::TryParse((Read-Host "Entrez une seconde valeur numerique"), [ref]$OK)
        if (-not $OK) {
            Write-Host ("ERREUR ! Vous devez entrez une valeur numerique")
            $OK = $false
        }
        else{
            $OK = $true    
        }
    } while (-not $OK)

    $operation = Read-Host -prompt "Quelle opération voulez-vous réaliser? Choisissez entre [+, -, *, or /] "
    Switch($operation)
    {
        -
        {
            Write-Host("Le resultat de votre soustraction est :")
            $Valeur1 - $Valeur2
        }
        +
        {
            Write-Host("Le resultat de votre addition est :")
            $Valeur1 + $Valeur2
        }
        *
        {
            Write-Host("Le resultat de votre multiplication est :")
            $Valeur1 * $Valeur2
        }
        /
        {
            Write-Host("Le resultat de votre division est :")
            $Valeur1 / $Valeur2
        }
        default
        {
            Write-Host("Option Invalide")
        }
    }

    $choix = Read-Host "Desirez-vous continuer? Y/N" 
    if($choix -eq "Yes"){
        $R = $true
    }
    if($choix -eq "Y"){
        $R = $true
    }
    else{
        $R = $false
        exit
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-28 01:27:07

来自文档

result Int32 当此方法返回时,如果转换成功,则包含与s中包含的数字等效的32位有符号整数值,如果转换失败,则为零。

当您执行[ref]$OK时,如果转换成功,该变量将保存解析的.TryParse操作的结果,但是,您将在ifelse条件($OK = $true$OK = $false)上覆盖该值。

此外,根据操作的成功程度,来自.TryParse方法的输出将是$true / $false (--此布尔值将分配给$false,因为这两个变量都分配了此操作)。

返回 Boolean 如果成功转换了true,则为s;否则为false

这里是一个简化的,工作的,你的代码变化。值得一提的是,由于您正在执行两个解析操作,保存相同逻辑的函数 (ParseInput)将更有意义,这样代码就不会重复。

代码语言:javascript
复制
Write-Host "Microsoft Powershell Calculator V3"

function ParseInput {
    $ref = ''
    do {
        $parsed = [int]::TryParse((Read-Host "Entrez une premiere valeur numerique"), [ref]$ref)
        if (-not $parsed) {
            Write-Host "ERREUR ! Vous devez entrez une valeur numerique"
        }
    } while (-not $parsed)
    $ref
}

$R = $true

while ($R) {
    $Valeur1 = ParseInput
    $Valeur2 = ParseInput
    $operation = Read-Host "Quelle opération voulez-vous réaliser? Choisissez entre [+, -, *, or /] "
    Switch($operation) {
        - {
            Write-Host "Le resultat de votre soustraction est :"
            $Valeur1 - $Valeur2
        }
        + {
            Write-Host "Le resultat de votre addition est :"
            $Valeur1 + $Valeur2
        }
        * {
            Write-Host "Le resultat de votre multiplication est :"
            $Valeur1 * $Valeur2
        }
        / {
            Write-Host "Le resultat de votre division est :"
            $Valeur1 / $Valeur2
        }
        default {
            Write-Host "Option Invalide"
        }
    }
    $choix = Read-Host "Desirez-vous continuer? Y/N"
    if($choix -notmatch "^(Yes|Y)$") {
        $R = $false
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71289661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档