【问题标题】:Powershell check types of int and doublePowershell检查int和double的类型
【发布时间】:2012-12-04 10:34:04
【问题描述】:

我需要用户填写一个整数,但使用下面显示的代码,也允许使用双精度数。如何将其更改为仅允许整数?

do{

    $opgegevenGetal = read-host "Enter an integer"

    if(![bool]($opgegevenGetal -as [int])){
        write-host "Only integers please"
    }

}

until ([bool]($opgegevenGetal -as [int]))

【问题讨论】:

    标签: powershell integer double


    【解决方案1】:

    尝试:

    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)
    

    【讨论】:

    • @Tomzie 只是一个精确度:如果用户输入 0 (因为直到测试)循环不会退出。如果是一个问题,我会发布一个简单的方法来解决它。
    • 更紧凑的版本:$value = 0; $read = Read-Host 'Enter an integer'; while( ![int]::TryParse( $read, [ref]$value ) ) { $read = Read-Host 'Only integers please' }
    【解决方案2】:

    Christian's answer 的更紧凑的版本:

    $value = 0
    $read = Read-Host 'Enter an integer'
    while( ![int]::TryParse( $read, [ref]$value ) ) {
      $read = Read-Host 'Only integers please'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2022-10-13
      • 2022-10-20
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多