2014-10-05 58 views
-1

我試圖運行此代碼:爲什麼我的if語句認爲「5」大於「250000」?

print "How much money do you want me to lend you?" 
    money = gets.chomp 

    if money >"250000" 
    puts "I'm sorry but I can't lend you that amount of money" 
    else 
    puts "The interest rate will be of 10% monthly" 
    end 
    puts "Do you accept? Yes/No" 
    answer = gets.chomp 

的問題是,如果我運行程序ADN寫的錢,如5少量的消息:「我很抱歉,但我不能借給你這筆錢「將出​​現,當它不應該因爲金額不超過250000.

+1

也許你應該把錢值轉換成int比較它 – 2014-10-05 16:31:59

+0

沒錯之前,將其轉換成INT這樣'錢=變.chomp.to_i'和比較'如果金錢> 250000',它應該工作。 – 2014-10-05 16:33:26

+0

「它不應該」 - 不要說謊;這應該。 '「5」'比「250000」更大(稍後排序)。 – sawa 2014-10-05 17:21:58

回答

5

你比較字符串,而不是整數,並用字母學方式看,"5"是大於"250000"

"5" > "250000" #=> true 
"5".to_i > "250000".to_i #=> false 
Even better as proposed in another answer money.to_i > 250000 

這裏我使用的方法String#to_i的金額轉換爲數字,當你期望它做比較。

您還可以閱讀關於這個非常複雜的文章here中字符串的本地字典順序。通常,您將字符從左到右逐個比較,直到您獲得第一個不等式並從中返回結果。

0

您正在比較字符串值,因此「5」按字典順序大於「2(5000)」。比較之前的值轉換爲整數,離開了從「25000」的雙引號:

if money.to_i > 25000 
    ...