對于我的編碼介紹課程,我必須在 PowerShell 上做一個簡單的計算器 、和。為什么我的變數&在整數驗證期間不保持不變?我的 4 個選項給出了一個隨機答案,并且不記得我的 2 個變數的初始值。-*/Valeur1Valeur2Read-Host
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
}
}
uj5u.com熱心網友回復:
從Int32.TryParse(String, Int32)檔案:
resultInt32
當此方法回傳時,如果轉換成功,則包含與 中包含的數字等效的 32 位有符號整數值s,如果轉換失敗,則包含零。
當你這樣做時[ref]$OK,如果轉換成功,這個變數將保存你的操作的決議結果.TryParse,但是,你在你的ifandelse條件($OK = $true 和$OK = $false)上覆寫了這個值。
此外,該.TryParse方法的輸出將是$true/$false取決于操作的成功(這個布林值將被分配給$valeur1并且$valeur2因為兩個變數都分配了這個操作)。
Boolean
true如果s轉換成功則回傳;否則,false。
這是您的代碼的簡化、有效的變體。值得一提的是,由于您正在執行 2 次決議操作,因此具有相同邏輯的函式( ParseInput) 會更有意義,這樣代碼就不會重復。
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
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434563.html
