我需要用户填写一个整数,但是在下面的代码中,也允许输入小数。我该如何修改代码,只允许输入整数?
do{
$opgegevenGetal = read-host "Enter an integer"
if(![bool]($opgegevenGetal -as [int])){
write-host "Only integers please"
}
}
until ([bool]($opgegevenGetal -as [int]))
我需要用户填写一个整数,但是在下面的代码中,也允许输入小数。我该如何修改代码,只允许输入整数?
do{
$opgegevenGetal = read-host "Enter an integer"
if(![bool]($opgegevenGetal -as [int])){
write-host "Only integers please"
}
}
until ([bool]($opgegevenGetal -as [int]))
尝试:
do{
$opgegevenGetal = read-host "Enter an integer"
$a = ""
if( ![int32]::TryParse( $opgegevenGetal , [ref]$a ))
{
write-host "Only integers please"
}
} until ($a -gt 0)
接受以 0
为输入的代码:
do{
$opgegevenGetal = read-host "Enter an integer"
$a = ""
if( ![int32]::TryParse( $opgegevenGetal , [ref]$a ))
{
write-host "Only integers please"
}
} until ($a -gt 0 -or $opgegevenGetal -eq '0')
或者:
do{
$opgegevenGetal = read-host "Enter an integer"
$a = ""
$b = [int32]::TryParse( $opgegevenGetal , [ref]$a )
if( !$b)
{
write-host "Only integers please"
}
} until ($b)
这是一个更紧凑的版本,基于Christian的答案:
$value = 0
$read = Read-Host 'Enter an integer'
while( ![int]::TryParse( $read, [ref]$value ) ) {
$read = Read-Host 'Only integers please'
}
0
(因为 until 测试),循环不会退出。如果这是个问题,我会发布一个简单的解决方法。 - CB.$value = 0; $read = Read-Host '请输入一个整数'; while( ![int]::TryParse( $read, [ref]$value ) ) { $read = Read-Host '只能输入整数,请重新输入' }
- Emperor XLII