嵌套if语句不起作用

时间:2016-05-01 09:18:05

标签: powershell if-statement

我正在尝试编写寻找闰年的代码。但是,嵌套的ifelse格式似乎有问题。请建议。

[int]$x = Read-Host -Prompt 'Input a year : ';

if ($x % 4 -eq 0) {
    Write-Host $x 'is a leap year';
    if ($x % 100 -eq 0) {
        Write-Host $x 'is a leap year';
        if ($x % 400 -eq 0) {
            Write-Host $x 'is a leap year';

        else {
            Write-Host $x 'is not a leap year';
        }
    }
    else {
        Write-Host $x 'is not a leap year';
    }
}
else {
    Write-Host $x 'is not a leap year';
}

2 个答案:

答案 0 :(得分:3)

我认为这就是你想要的:

[int]$x = Read-Host -Prompt 'Input a year : ';

If ($x % 4 -eq 0) {
    if ($x % 400 -eq 0){
        Write-Host $x 'is a leap year';
    }
    Elseif ($x % 100 -eq 0){
        Write-Host $x 'is not a leap year';
    }
    Else{
        Write-Host $x 'is a leap year';
    }
}
Else {
    Write-Host $x 'is not a leap year';
}

答案 1 :(得分:3)

正如Mathias所提到的,你错过了一个结束的花括号。但是,您仍然可以大量简化代码并嵌套if语句:

[int]$x = Read-Host -Prompt 'Input a year : ';

if($x % 4 -eq 0 -and ($x % 400 -eq 0 -or $x % 100 -ne 0))
{
    Write-Host "$x is a leap year"
}
else
{
    Write-Host "$x is not a leap year"
}

或者只是使用:

[System.DateTime]::IsLeapYear($x)