You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中简单if函数字符串判断始终返回false问题求助

解决Ruby中字符串类型if判断始终返回false的问题

嘿,我太懂你遇到的这个问题了——刚学Ruby的时候我也踩过一模一样的坑!

问题根源

你代码里的gets()方法会把用户输入的**换行符(\n)**也一起读取进来。也就是说,当你输入B然后按下回车键,text变量实际存储的是"B\n"(末尾多了个换行符),而你的answer是"B",这两个字符串自然不相等,所以if判断会返回false。

这也是为什么用整数类型时能正常工作——因为转换整数的时候,Ruby会自动忽略掉末尾的换行符,但字符串类型不会做这个处理。

解决方案

只需要给gets()加上.chomp方法,它会自动去掉字符串末尾的换行符和回车符:

修改后的完整代码:

puts("For each question select A, B, or C")
puts("What is the capital of Kentucky?")
puts()
puts("A. Louisville")
puts("B. Frankfort")
puts("C. Bardstown")
puts()
answer = String("B")
text = gets.chomp  # 这里加上chomp方法
puts()
if text == answer
  puts("correct")
else
  puts("incorrect")
  puts("The correct answer was " + answer + ".")
end

如果你担心用户输入时不小心加了首尾空格,也可以用.strip方法,它会去掉字符串首尾所有的空白字符(包括空格、制表符、换行符),比如text = gets.strip,这样容错性更强。

内容的提问来源于stack exchange,提问作者Travis Sidebottom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:17:53