1

我正在制作一个游戏,从一堆 15-30 块石头开始,用户和计算机都取石头,直到取完最后一颗石头。但是,我需要一个函数来确定用户拿走的石头数量是否有效,即小于等于 3 且大于 0。所以我的函数应该返回 true 或 false,但是当我输入 " 2",它返回假。这是涉及的代码:

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- 每当棋子低于三时,玩家和计算机都可以拿走比可用的更多的棋子,这就是第一个 if 语句存在的原因。

4

2 回答 2

1

那是因为您正在比较字符串:

"19" >= "2" // false

您必须将至少一个变量转换为整数,假设它们都是字符串:

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 回答