Powershell: Taschenrechner funktioniert nicht?
Untenstehend mein Code:
cls
write-host "Herzlich Willkommen"
[char]$a = Read-Host "Welche Operation möchten Sie ausführen +,-,,/ ?"
[double]$d = ""
[double] $b = Read-Host "Geben Sie die erste Zahl ein"
[double] $c = Read-Host "Geben Sie die erste Zahl ein"
if($a = "/" -and ($c = "0")) {
write-host "Durch 0 nicht teilbar."
read-Host "Geben Sie die 2. Zahl erneut ein."
}
elseif($a -eq "+"){
$d = $b + $c
write-Host "Ihr Resultat beträgt $d"
}
elseif($a -eq "-") {
$d = $b - $c
write-Host "Ihr Resultat beträgt $d"
}
elseif($a -eq "") {
$d = $b * $c
write-Host "Ihr Resultat beträgt $d"
}
elseif($a -eq "/") {
$d = $b / $c
write-Host "Ihr Resultat beträgt $d"
}
else {
write-Host "Dieser Operator wir nicht erkannt"
}
1 Antwort
In der ersten If versuchst du die Werte mit einem "=" zu vergleichen. Dies zu "-eq" ändern, wie bei den anderen If Abfragen auch.
if($a = "/" -and ($c = "0"))
if ($a -eq "/" -and ($c -eq "0"))
Außerdem fehlt dort vor dem "read-Host" die Variable.
read-Host "Geben Sie die 2. Zahl erneut ein."
$c = read-Host "Geben Sie die 2. Zahl erneut ein."
Zur Übersicht benenne die Variablen bitte nicht mit a,b,... sondern vergebe aussagekräftige Namen.
cls
write-host "Herzlich Willkommen"
[char]$operator = Read-Host "Welche Operation m�chten Sie ausf�hren + , - , * , / ?"
#operator überprüfen / erneute eingabe
while (($operator -ne "+") -and ($operator -ne "-") -and ($operator -ne "*") -and ($operator -ne "/")) {
write-host "Dieser Operator wir nicht erkannt"
$operator = read-Host "Geben Sie einen der angegebenen Operatoren an: + , - , * , / "
}
[double]$ergebniss = ""
[double] $zahlEins = Read-Host "Geben Sie die erste Zahl ein"
[double] $zahlZwei = Read-Host "Geben Sie die erste Zahl ein"
#Sonderfall division durch 0 abfangen
while ($operator -eq "/" -and ($zahlZwei -eq "0")) {
write-host "Durch 0 nicht teilbar."
$zahlZwei = read-Host "Geben Sie die 2. Zahl erneut ein."
}
#falls überprüfung per while schleife oben nicht vorhanden, an dieser stelle prüfen ob operator vorhanden
# if ($operator -eq ("+") -or $operator -eq ("-") -or $operator -eq ("*") -or $operator -eq ("/")) {
switch ($operator) {
"+" { $ergebniss = $zahlEins + $zahlZwei }
"-" { $ergebniss = $zahlEins - $zahlZwei }
"*" { $ergebniss = $zahlEins * $zahlZwei }
"/" { $ergebniss = $zahlEins / $zahlZwei }
}
write-Host "Ihr Resultat betr�gt $ergebniss"
# }
# else {
# write-Host "Dieser Operator wir nicht erkannt"
# }
Operator überprüfung am anfang
den langen if-else teil durch ein switch-case ersetzt
cls
write-host "Herzlich Willkommen"
[char]$operation = Read-Host "Welche Operation m�chten Sie ausf�hren +,-,,/ ?"
[double]$ergebniss = ""
[double] $zahlEins = Read-Host "Geben Sie die erste Zahl ein"
[double] $zahlZwei = Read-Host "Geben Sie die erste Zahl ein"
do {
write-host "Durch 0 nicht teilbar."
$zahlZwei = read-Host "Geben Sie die 2. Zahl erneut ein."
} while ($operation -eq "/" -and ($zahlZwei -eq "0"))
if ($operation -eq "+") {
$ergebniss = $zahlEins + $zahlZwei
write-Host "Ihr Resultat betr�gt $ergebniss"
}
elseif ($operation -eq "-") {
$ergebniss = $zahlEins - $zahlZwei
write-Host "Ihr Resultat betr�gt $ergebniss"
}
elseif ($operation -eq "") {
$ergebniss = $zahlEins * $zahlZwei
write-Host "Ihr Resultat betr�gt $ergebniss"
}
elseif ($operation -eq "/") {
$ergebniss = $zahlEins / $zahlZwei
write-Host "Ihr Resultat betr�gt $ergebniss"
}
else {
write-Host "Dieser Operator wir nicht erkannt"
}