【发布时间】:2018-11-12 15:34:15
【问题描述】:
这个程序接受两个字符串数组,然后从 a2 中的最短者中减去 a1 中最长者的长度,反之亦然,并返回较大者。
它可以工作(通过 103/103 测试),但我收到此错误:
NoMethodError: undefined method `length' for nil:NilClass
main.rb:10:in `mxdiflg'
main.rb:66:in `block (2 levels) in <main>'
问题出在哪里?而且由于这不是第一次发生这种情况,我该如何调试可以运行的程序?
def mxdiflg(a1, a2)
if a1 == '' || a2 == ''
-1
end
a1_order = a1.sort{|left, right| left.length <=> right.length}
a2_order = a2.sort{|left, right| left.length <=> right.length}
a_total = a1_order.reverse[0].length - a2_order[0].length
b_total = a2_order.reverse[0].length - a1_order[0].length
if b_total > a_total
b_total
else
a_total
end
end
【问题讨论】:
-
如果此方法采用“两个字符串数组”,那么您为什么要检查这些值是否等于空的
String? -
你说的很对,就是这样。
标签: ruby nomethoderror