首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"if“条件带来的麻烦

"if“条件带来的麻烦
EN

Stack Overflow用户
提问于 2012-10-29 05:12:03
回答 1查看 58关注 0票数 2

我有一个索引视图,其中一个人输入两个球员和一个分数,我的应用程序应该返回这两个人中的获胜者。我通过params散列获得输入,并尝试处理它,但if中提供的第一个条件似乎总是计算为true。下面是我的from my controller操作中的代码,以及呈现响应的视图:

代码语言:javascript
复制
def find_winner
    @player_1 = params[:player_1]
    @player_2 = params[:player_2]
    @set_1 = params[:set_1]
    @set_2 = params[:set_2]
    @set_3 = params[:set_3]

      a = @set_1[0].to_i
      b = @set_1[1].to_i
      c = @set_2[0].to_i
      d = @set_2[1].to_i
      e = @set_3[0].to_i
      f = @set_3[1].to_i

      if ((a + c + e) > (b + d + f)) then 
        @winner = @player_1
      elsif ((a + c + e) < (b + d + f)) then 
        @winner = @player_2
      else
        @winner = "winner"
      end
  end

以及.erb模板中的代码:

代码语言:javascript
复制
<%= @player_1 %>
<%= @a %>
<%= @player_2 %>
<%= @set_1.class %>
<%= @set_2 %>
<%= @set_3 %>
<%= @b %>
<blockquote> the winner is <%= @winner %>

@winner始终计算为player_1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-29 05:24:53

啊,最后,问题是你的代码中的。您的代码与数据格式不对应。在注释中,您可以显示您发送的样本数据。看:

代码语言:javascript
复制
set_1 = '3,6'

a = set_1[0].to_i # => 3
b = set_1[1].to_i # => 0

这里的set_1是一个字符串,而不是您可能认为的数组。因此,它的第二个元素是逗号。将逗号转换为整数会产生0。因此,(a,c,e)的和将始终大于零的和(b,d,f)。

你可能想做一些类似这样的事情:

代码语言:javascript
复制
a, b = params[:set_1].split(',').map(&:to_i)
c, d = params[:set_2].split(',').map(&:to_i)
e, f = params[:set_3].split(',').map(&:to_i)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13113064

复制
相关文章

相似问题

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