我已檢查過該程序是否接收數字和名稱,它是。我想知道爲什麼當輸入數字是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
我已檢查過該程序是否接收數字和名稱,它是。我想知道爲什麼當輸入數字是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"
...
...
...
天哪,就是我寫的幾乎每一個程序都殺了我......轉換爲字符串和整數。無論如何,非常感謝您的答覆,非常感謝。 – 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