初学者Ruby如果其他
问题描述:
我已检查过该程序是否接收数字和名称,它是。我想知道为什么当输入数字是1时不打印“fred”?初学者Ruby如果其他
number = ARGF.read.chomp
names = %w{fred betty barney}
if number == 1
puts names[0]
elsif number == 2
puts names[1]
elsif number == 3
puts name[2]
end
答
number
是一个字符串,而不是一个整数。您可以转换为整数:
number = ARGF.read.chomp.to_i
,或者你可以测试对字符串代替:
if number == "1"
...
...
...
+0
天哪,就是我写的几乎每一个程序都杀了我......转换为字符串和整数。无论如何,非常感谢您的答复,非常感谢。 – jimmyc3po
答
number
可能是一个字符串,在这里,但你有一个整数比较它。
1 == '1' # false
尝试
number = ARGF.read.chomp.to_i # note the to_i here
names = %w{fred betty barney}
if number == 1
puts names[0]
elsif number == 2
puts names[1]
elsif number == 3
puts names[2]
end
此外,您还可以使用case/when
语句时,你要基于单个变量的多个值,从而采取不同的路径。这通常是处理这种类型流的更清洁的方式。
number = ARGF.read.chomp.to_i
names = %w{fred betty barney}
case number
when 1
puts names[0]
when 2
puts names[1]
when 3
puts names[2]
end
或在这种情况下,就更简单了:
number = ARGF.read.chomp.to_i
names = %w{fred betty barney}
puts names[number-1]
应该工作。
答
number
是一个字符串。您可以检查通过印刷它的类是这样的:
p number.class
您需要number
转换为整数这样的:
number = ARGF.read.chomp.to_i
但请记住这to_i
将为无效的字符串返回0
。只有当你确定传入的数据时才这样做。
试试这个在Codepad。
看起来像数是一个字符串,不应攀比像“1”,“2”和“3”? – aishwarya