3

switchステートメントを使用したいのですが、次の場合の条件は次のとおりです。

if (userInput%2 == 0 || userInput != 0)

このコードから2つのケースを取得して、のために異なるアクションを実行し、のために異なるアクションを実行することはできますかuserInput == 0userInput == 0

case ?:

case ?:
4

2 に答える 2

3

2 つの条件を満たす値セットが重複しているため、できません。具体的には、すべての偶数が条件の両方の部分を満たします。そのため、条件のどの部分が優先されるかを最初に決定せずに、さまざまなアクションを実行することはできません。

switch次のように、ステートメント内でフォールスルーを使用してちょっとしたトリックを行うことができます。

switch(userInput%2) {
    case 0:
        // Do things for the case when userInput%2 == 0
        ...
        // Note: missing "break" here is intentional
    default:
        if (userInput == 0) break;
        // Do things for the case when user input is non-zero
        // This code will execute when userInput is even, too,
        // because of the missing break.
        ...
}
于 2013-01-28T20:33:52.120 に答える
2

ifステートメントを分割しない理由

if (userInput%2 == 0) {
    // something
}
else if (userInput != 0) {
    // something else
}

すべてのゼロ以外の偶数は両方のテストを満たすため、テストの順序が重要になることに注意してください。

于 2013-01-28T20:33:42.447 に答える