有没有办法让我的while循环在ruby中使用字符串?
我的问题是,我正在尝试编写一个相当简单的程序,它会询问用户是否愿意接受赞美。然后,用户可以输入“是”或“否”。我有一个while循环,检测用户是否说是,然后执行。然而,代码似乎只是跳过了它 我试过摆脱掉,倒壳,我试过,倒壳。它可以处理整数,但不能处理字符串。我将==更改为1,并将其设置为true,它执行得非常好。它只发生在字符串值上,即使我使用if语句 输入:有没有办法让我的while循环在ruby中使用字符串?,ruby,Ruby,我的问题是,我正在尝试编写一个相当简单的程序,它会询问用户是否愿意接受赞美。然后,用户可以输入“是”或“否”。我有一个while循环,检测用户是否说是,然后执行。然而,代码似乎只是跳过了它 我试过摆脱掉,倒壳,我试过,倒壳。它可以处理整数,但不能处理字符串。我将==更改为1,并将其设置为true,它执行得非常好。它只发生在字符串值上,即使我使用if语句 输入: compliment = Array.new compliment[0] = "You look absolutely stunning
compliment = Array.new
compliment[0] = "You look absolutely stunning right now!"
compliment[1] = "It's always a blast to hang out with you!"
print "Do you want a compliment?"
wantcompliment = gets.to_s
size = compliment.size
while (wantcompliment.downcase == 'yes')
x = rand(size)
xplusone = x + 1
puts compliment[x]
puts ''
puts "You got compliment " + xplusone.to_s + " out of " + size.to_s
print "Would you like another compliment?"
wantcompliment = gets.to_s
end
puts wantcompliment.downcase #Debug
输出:
C:\Ruby26-x64\bin\ruby.exe C:/Users/test/RubymineProjects/Project5/Compliment.rb
Do you want a compliment?Yes
yes
Process finished with exit code 0
get
返回的字符串附加了一个换行符:
irb(main):002:0> gets
yes
=> "yes\n"
您只需使用gets.chomp
即可,这将删除尾随的\n
字符:
irb(main):003:0> gets.chomp
yes
=> "yes"
get
返回的字符串附加了一个换行符:
irb(main):002:0> gets
yes
=> "yes\n"
您只需使用gets.chomp
即可,这将删除尾随的\n
字符:
irb(main):003:0> gets.chomp
yes
=> "yes"
请尝试
wantcompliment=get.to_.s.strip
,基本上您应该去掉换行符。@sam,这里get
返回一个字符串,因此.to_.s
的值值得怀疑chomp
通常仅用于删除换行符strip
用于删除由gets
@CarySwoveland返回的字符串开头和结尾的空白。是的,您是对的,根据代码,与“yes”字符串相比,最好去掉实际字符周围的空白。tryWantCompletion=gets.to_.strip
,基本上你应该去掉换行符。@sam,这里get
返回一个字符串,所以.to\s
的值值得怀疑chomp
通常仅用于删除换行符strip
用于删除gets
@CarySwoveland返回的字符串开头和结尾的空白。是的,您是对的,根据代码,与“yes”字符串相比,最好去掉实际字符周围的空白。