所以,我选择了 JavaScript,因为我似乎很喜欢它。我买了一个在线类(class),现在我的代码面临挑战。这是一个非常简单的问题,所以希望其中一位专家可以帮助这个可怜的家伙(我)。
我有以下代码,据我所知应该是正确的:
var johnAge = 25;
var markAge = 30;
var steveAge = 40;
var johnHeight = 170;
var markHeight = 175;
var steveHeight = 150;
var John, Mark, Steve;
John = johnHeight + 5 * johnAge;
Mark = markHeight + 5 * markAge;
Steve = steveHeight + 5 * steveAge;
console.log('John: ' + John);
console.log('Mark: ' + Mark);
console.log('Steve: ' + Steve);
if (John > Mark && Steve) {
console.log('John wins!');
} else if (Mark > Steve && John) {
console.log('Mark wins!');
} else if (Steve > John && Mark) {
console.log('Steve wins!');
} else {
console.log("it's a draw.");
}
这是我的问题:
约翰:295
标记:325
史蒂夫:350
史蒂夫赢了!
现在,这场比赛是关于拥有最高分的人赢得比赛。根据他的得分,史蒂夫显然是赢家。
问题出在这部分:
} else if (Mark > Steve && John) {
console.log('Mark wins!');
} else if (Steve > John && Mark) {
console.log('Steve wins!');
如果我进行以下更改,它将显示“Mark”赢得了比赛:
} else if (Mark > John && Steve) {
console.log('Mark wins!');
}
我只是在“约翰”和“史蒂夫”之间切换了位置。如果 John 先来,则表明“Mark won the game”,如果 Steve 先来,它会继续执行下一个“else if”,即“Steve won the game”。
我不明白的是,为什么即使我使用的是逻辑和 &&,但改变我的变量之间的位置会导致如此巨大的差异。
这个问题在我用binary和&的时候好像不存在。不过,就我所读到的内容而言,二进制和在编码方面并不可取,并且没有太多可以使用它的实际应用程序。
因此,如果可能的话,我想使用 && 而不是依赖 & 来解决这个问题。
我真的不明白这些变化及其原因。
预先感谢您对我的帮助和指导。
~干杯
请您参考如下方法:
您需要像这样检查玩家和其他玩家: 你现在的 if 语句是 Steve > John(true) && Mark(true)
。
var johnAge = 25;
var markAge = 30;
var steveAge = 40;
var johnHeight = 170;
var markHeight = 175;
var steveHeight = 150;
var John, Mark, Steve;
John = johnHeight + 5 * johnAge;
Mark = markHeight + 5 * markAge;
Steve = steveHeight + 5 * steveAge;
console.log('John: ' + John);
console.log('Mark: ' + Mark);
console.log('Steve: ' + Steve);
if (John > Mark && John > Steve ) {
console.log('John wins!');
} else if (Mark > Steve && Mark > John) {
console.log('Mark wins!');
} else if (Steve > John && Steve > Mark) {
console.log('Steve wins!');
} else {
console.log("it's a draw.");
}