我目前正在学习一些程序来学习Ruby。我一直在玩一个回文程序,但无论输入(回文)我最终都在else
。
以下是我一直在尝试的一些代码:
print "enter a string:\n"
string = gets
if string.reverse == string
print "it's a palindrome"
else
print "not a palindrome.\n"
end
非常感谢任何帮助/建议。
答案 0 :(得分:1)
不会从字符串中删除换行符。试试这段代码:
print "enter a string:\n"
string = gets.chomp
if string.reverse == string
print "it's a palindrome"
else
print "not a palindrome.\n"
end
以下是一些解释:
>> string = gets
racecar # input string
=> "racecar\n"
>> "racecar\n" == "racecar\n".reverse # "racecar\n" is not a palindrome with newline character
=> false
>> string = gets.chomp # chomp method deletes newline character
racecar
=> "racecar"
>> "racecar" == "racecar".reverse # "racecar" without a newline character is a palindrome
=> true
答案 1 :(得分:1)
了解Ruby的puts
是如何工作的:它就像print
,只是更聪明。
如果字符串以"\n"
结尾,则按原样打印。如果它不以"\n"
结尾,则会打印该行并添加"\n"
。无论哪种方式,您都可以保证添加新行。
知道这一点,请考虑一下:
puts "enter a string:"
string = gets
if string.reverse == string
puts "it's a palindrome"
else
puts "not a palindrome."
end
因此,不需要在字符串中添加新行。 puts
是在Ruby中输出文件和控制台的行的标准方法。
答案 2 :(得分:1)
以下陈述如果是回文,则返回true,否则返回false:
string == string.reverse