【问题标题】:Subtracting an element of an array from another element of same array从同一数组的另一个元素中减去一个数组的元素
【发布时间】:2013-03-01 12:39:03
【问题描述】:

我有一个包含浮点值的数组(time)。我想减去这个数组的元素并将结果存储在另一个数组中并进一步打印它。我尝试了以下方法:

time=Array.new

time=open("/home/sakshi/Desktop/test/PACKET-WISE_DETAILS/pkt_time.tsv", &:read)

time.each do |i|
  puts time[i+1]-time[i]
end

但我收到此错误:

'in `+': can't convert Fixnum into String (TypeError) ' error. 

我还尝试使用while 循环重写上述代码,但这也不起作用。

【问题讨论】:

  • 什么时间?做p time。另外,您使用的是哪个版本的 ruby​​?
  • time 是我从 pkt_time 文件中获取值的数组。但它采用了错误的价值观。我是否以错误的方式读取文件?
  • 我正在使用 ruby​​ 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]

标签: ruby arrays subtraction


【解决方案1】:

这是因为您正在向对象添加整数值,即 id,试试这个

time = Array.new

time = open("/home/sakshi/Desktop/test/PACKET-WISE_DETAILS/pkt_time.tsv", &:read)

time.each_with_index do |i,index|

 puts time[index+1]-time[index] if index < time.size #to avoid overflow when reaches the end

end

【讨论】:

  • 它仍然无法正常工作...它给了我以下错误:pkt_time.rb:19: undefined method -' for "2":String (NoMethodError) from pkt_time.rb:57:in each_with_index' from pkt_time.rb:18:in each' from pkt_time.rb:18:in each_with_index' from pkt_time .rb:18
  • 这是由于 time[index+1] 可能包含字符串对象对象。尝试使用 to_f 将其转换为浮点数。如果它是有效的数字,也可以通过打印重新检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多