【问题标题】:How to sum an array of integer strings?如何对整数字符串数组求和?
【发布时间】:2021-12-09 03:57:54
【问题描述】:

问题:将数组字符串元素转换为整数求和。 我的代码:

ch = ["+7", "-3", "+10", "0"]

ch.to_i
soma = 0
string.each do |ch| 
    if ch.isdigit() 
        soma += ch.to_i
    end
end
p(soma)

错误:

Traceback (most recent call last):
main.rb:2:in `<main>': undefined method `to_i' for ["+7", "-3", "+10", "0"]:Array (NoMethodError)
Did you mean?  to_s
               to_a
               to_h

【问题讨论】:

  • 代码第二行出现错误:ch.to_i。您正在尝试将数组转换为整数,这不是有效的操作。 ruby 中也没有 ch.isdigit() 方法,除非你自己定义!
  • 错误告诉你Array 类没有to_i 方法。您需要将to_i 应用于数组的各个元素,使用map 或显式地遍历数组(这会更慢)。
  • 太棒了!我没有注意到这个细节。非常感谢!
  • string 未定义,没有 isdigit 方法。我不确定该代码是如何到达to_i
  • 您的问题是什么?您的问题以“问题:”开头,然后包含两个陈述且没有问题。

标签: arrays ruby string integer


【解决方案1】:

您需要在数组中的每个元素上调用to_i,而不是在这一行ch.to_i 中的字符串数组上调用to_i

numbers = ["+7", "-3", "+10", "0"]
sum = 0
numbers.each do |element| 
  sum += element.to_i
end
puts sum
#=> 14

或简化并使用常见的 Ruby 习语:

numbers = ["+7", "-3", "+10", "0"]
numbers.map(&:to_i).sum
#=> 14

【讨论】:

  • numbers.sum(&amp;:to_i)
【解决方案2】:

总和 =0 l=list(input("输入要添加的列表")) 对于 l 中的 i: 如果 i.isdigit(): 总和=总和+我 别的: 继续 print("给定整数字符串的总和"+sum)

【讨论】:

  • 这看起来不像是有效的 Ruby 代码。
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 2016-04-10
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
相关资源
最近更新 更多