Ruby代码不起作用

时间:2015-09-26 12:22:04

标签: ruby if-statement methods each

/ Users / danielwheeler / Desktop / Screen Shot 2015-09-26 at 13.18.16.png

我正在尝试创建一个方法,将数字作为输入,将其转换为字符串。不确定是什么问题。

来自sublime的错误消息是:

/Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:30:in `block in english_number': no implicit conversion of nil into String (TypeError)
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:23:in `each'
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:23:in `each_with_index'
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:23:in `english_number'
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:44:in `<main>'
[Finished in 0.1s with exit code 1]

1 个答案:

答案 0 :(得分:1)

我检查了你的代码并发现了一些问题:

String user = ((JRadioButton) e.getItem()).getName();
System.out.println(user);

num_array.reverse.each_with_index { |value , index| if index % 3 == 0 && num_array[index] != 0 num_string = num_string << ones_place[value-1] elsif index % 3 == 0 && value > 0 && num_array[index] != 0 num_string = num_string << other_place[index/3] << ones_place[value-1] elsif index % 3 == 1 num_string = num_string << tens_place[value-1] elsif index & 3 == 2 num_string = num_string << other_place[0] << ones_place[value-1] end } 可能为nil,您尝试将nil添加到字符串中,因此ones_place[value-1]被引发。如果TypeError为nil,则应将其更改为字符串,只需使用ones_place[value-1]方法或使用to_s将字符串添加到一起。

+

我修改了下面的代码,脚本可以正常工作,没有发现错误,但我不知道结果是否正确,你应该自己检查一下。

"" << nil
TypeError: no implicit conversion of nil into String

"" << nil.to_s
=> ""

我建议您在脚本中添加一些调试代码,它可以帮助您尽快发现问题。