我必须做一个简单的计算器+,-,*和/在PowerShell上我的编码入门课程。为什么我的变量Valeur1 & Valeur2在整数验证过程中不保持完整?我的4个选项给出了一个随机的答案,并且不记得我的2个Read-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
}
}发布于 2022-02-28 01:27:07
来自文档
resultInt32 当此方法返回时,如果转换成功,则包含与s中包含的数字等效的32位有符号整数值,如果转换失败,则为零。
当您执行[ref]$OK时,如果转换成功,该变量将保存解析的.TryParse操作的结果,但是,您将在if和else条件($OK = $true和$OK = $false)上覆盖该值。
此外,根据操作的成功程度,来自.TryParse方法的输出将是$true / $false (--此布尔值将分配给、和$false,因为这两个变量都分配了此操作)。
返回
Boolean如果成功转换了true,则为s;否则为false。
这里是一个简化的,工作的,你的代码变化。值得一提的是,由于您正在执行两个解析操作,保存相同逻辑的函数 (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://stackoverflow.com/questions/71289661
复制相似问题