首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较运算符没有返回正确的值

比较运算符没有返回正确的值
EN

Stack Overflow用户
提问于 2016-12-01 19:24:47
回答 1查看 39关注 0票数 1

给出两个字符串,每个字符串代表善恶双方的成员,找出哪一方会获胜。

好:哈比人- 1,男子汉- 2,精灵- 3,矮人- 3,老鹰- 4,巫师- 10

邪恶:兽人- 1,人- 2,狼- 2,妖精- 2,乌鲁克海- 3,巨魔- 5,巫师- 10

我已经写了一个函数来判断哪一方会赢。它大部分时间都能工作,但有时它的行为很奇怪。

代码语言:javascript
复制
function goodVsEvil(good, evil){
 //string to array good and array evil in integers
  var aG = good.split(" ").map(x=>parseInt(x))
  var aE = evil.split(" ").map(x=>parseInt(x))

 //calculate final score good and final score evil
  var fSG = aG[0]*1 + aG[1]*2 + aG[2]*3 + aG[3]*3 + aG[4]*4 + aG[5]*10
  var fSE = aE[0]*1 + aE[1]*2 + aE[2]*2 + aE[3]*2 + aE[4]*3 + aE[5]*5 + aE[5]*10

  console.log('equals: '+ (fSG == fSE))
  console.log('good > evil: '+(fSG > fSE))
  console.log('good < evil: '+(fSG < fSE))
}

一些错误案例:

代码语言:javascript
复制
var result = goodVsEvil('1 0 0 0 1 0', '0 0 0 0 0 1 0')
//output
good: 5
evil: 5
equals: false
good > evil: false
good < evil: true

另一个:

代码语言:javascript
复制
good: 10
evil: 10
equals: false
good > evil: false
good < evil: true

另一个:

代码语言:javascript
复制
good: 2
evil: 2
equals: false
good > evil: true
good < evil: false

在这里,它运转良好

代码语言:javascript
复制
var result = goodVsEvil('1 1 0 0 0 0', '0 0 0 0 1 0 0')
good: 3
evil: 3
equals: true
good > evil: false
good < evil: false

这个谜题来自于代码战:https://www.codewars.com/kata/good-vs-evil/train/javascript

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-01 19:32:52

如果您记录fSGfSE,您会注意到在第一个示例中,fSE实际上等于15,而不是5

这是因为在计算值的行中有一个错误。您正在使用的是两次aE[5] 而不是 aE[6]

代码语言:javascript
复制
var fSE = aE[0]*1 + aE[1]*2 + aE[2]*2 + aE[3]*2 + aE[4]*3 + aE[5]*5 + aE[5]*10

这应该是

代码语言:javascript
复制
var fSE = aE[0]*1 + aE[1]*2 + aE[2]*2 + aE[3]*2 + aE[4]*3 + aE[5]*5 + aE[6]*10

作为附带说明,请尝试为您的变量找到更全面的名称。置乱三个字母组合使人们很难理解这些值背后的意图!:-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40918794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档