1

私は 15 ~ 30 個の石を積み上げて開始し、ユーザーとコンピューターの両方が最後の石が取られるまで石を取るゲームを作成しています。ただし、ユーザーが取った石の量が有効かどうか、つまり 3 以下で 0 より大きいかどうかを判断する関数が必要です。そのため、関数は true または false を返すことになっていますが、「 2" の場合、false を返します。関与するコードは次のとおりです。

var valid = validEntry(stones, stonesTaken);

function validEntry(stones, stonesTaken) {
    if (stones >= stonesTaken) {
        if(stonesTaken <= 3 && stonesTaken > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

PS-- ストーンが 3 未満になると、プレーヤーもコンピュータも使用可能な数よりも多くのストーンを取得できるため、最初の if ステートメントが存在します。

4

2 に答える 2

1

これは、文字列を比較しているためです。

"19" >= "2" // false

両方とも文字列であると仮定して、少なくとも 1 つの変数を整数にキャストする必要があります。

stones = parseInt(stones, 10);
stonesTaken = parseInt(stonesTaken, 10);
于 2013-03-22T01:09:04.853 に答える
0

必ず整数値を渡すかparseInt()、コメントに記載されている @Jared Farrish として使用してください。

function validEntry(stones, stonesTaken) {
    stones = parseInt(stones);
    stonesTaken = parseInt(stonesTaken);
    if (stones >= stonesTaken) {
        if(stonesTaken <= 3 && stonesTaken > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
于 2013-03-22T01:10:23.490 に答える