小编Mar*_* Jr的帖子

Ruby'is_a?' 需要的类或模块(TypeError)

我正在玩Ruby并尝试创建一个小银行帐户程序.当我运行使用create_account运行的特定代码行时:

unless @response.is_a? Integer && @response.to_str.length == 4
    puts "Your response must be 4 numbers in length."
    create_account
else
    @pin = @response
    puts "Your pin has been set."
end
Run Code Online (Sandbox Code Playgroud)

我收到了这个回复:

bank_account.rb:24:in 'is_a?':class or module required (TypeError)
    from bank_account.rb:24:in 'create_account'
    from bank_account.rb:47:in '<main>'
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚发生了什么,但我包括了其余的代码.这是不完整的,显然是因为我坚持这一部分.我经历一个while循环并输入'Create Account'来启动create_account方法.我的目标是运行条件并要求用户键入一个4位整数,就像任何ole pin号一样.如果它不是整数,也不是4位数,我调用create_account方法让它们重新开始.

如果有必要,我正在运行ruby 2.0.0,但我打赌它可能更多地与我的代码有关.Stackoverflow对我来说是新的,所以如果有人提出这个问题我很抱歉.在提出问题之前,我按照建议做了我的作业,但我仍然难过.任何帮助表示赞赏.

ruby conditional integer typeerror while-loop

20
推荐指数
1
解决办法
7690
查看次数

Ruby确定字符串是否只包含数字

我正在尝试创建一种方法,要求用户创建一个密码,例如银行帐户密码.它的长度只能是4个数字,输入的每个字符必须是数字.我在使用此代码时发现:

puts "Please give us a 4 digit pin number for your account:"
@response = gets.chomp 

unless @response.to_i.is_a?(Integer) && @response.to_str.length == 4
    puts "Your response must be 4 numbers in length."
    create_pin
else
    @pin = @response.to_i
    puts "Your pin has been set."
end
Run Code Online (Sandbox Code Playgroud)

它不会像我希望的那样工作,因为.to_i方法很乐意将'2134a'转换为2134.同样,如果字符串中没有Integer,它会将值记录为0,因为我需要它而不是false成为.

使用Ruby测试字符串是否基本上是引号中的整数?

我发现了一个非常有用的帖子,但它似乎在线程中变得非常复杂到regexp.此帖也被关闭,因为创建者不够具体:

检查Ruby中的字符串是否只包含正数

所以我会尽力清楚,我试图限制用户的输入,使他们只能通过9数学方程像10 ^ 3需要键入数字0是失败的,以及像-1234负数,而且我试图将它们限制为四位数,就像任何引脚受限一样.到目前为止,我完全难过,并没有看到一种不包含一大堆正则表达式的方法.

也许我可以检查字符串是否包含不可接受的字符列表.

谢谢你.

编辑更好的措辞和纠正我在第二段写的错误.

ruby regex string integer

3
推荐指数
1
解决办法
6361
查看次数

标签 统计

integer ×2

ruby ×2

conditional ×1

regex ×1

string ×1

typeerror ×1

while-loop ×1