Re: [問題] case比較數字大小
※ 引述《BM0108 (衝)》之銘言:
: 環境:
: ruby 1.8.7 on windows
: 狀況:
: 各位前輩好,我是今天剛開始學ruby的新手
: 我在練習case功能時遇到一些小trouble
: 我想要從命令列讀入3個數字,然後判斷是正數、負數抑或是0
: ================
: code:
: list = []
: for i in 0..2
: list[i]=ARGV[i].to_i
: case list[i]
: when <0
: puts "positive"
: when >0
: puts "negtive"
: else
: puts "it's zero"
: end
: end
: command line:
: D:\test>ruby array.rb 3 -9 0
: array.rb:7: syntax error, unexpected '<'
: when <0
: ^
: array.rb:9: syntax error, unexpected kWHEN, expecting kEND
: when >0
: ^
: array.rb:11: syntax error, unexpected kELSE, expecting kEND
: array.rb:14: syntax error, unexpected kEND, expecting $end
: ===========================
: 我有試著在when後面加上list[i]
: when list[i]>0
: when list[i]<0
: 這樣不會error,但是不論輸入啥,程式永遠都會跑else("it's zero")
: 請問問題點在哪?
: 謝謝!
你對ruby 的case 的概念不熟
case expr
when val1
stmt1
when val2
stmt2
else
stmt3
end
語意是當 expr 等於 val1 的時候,做stmt1
val2 stmt2
都不是的時候 做stmt3
以你的例子
case list[i]
when list[i] < 0
puts "Less than zero"
when list[i] > 0
puts "Bigger than zero"
else
puts "It's zero"
end
list[i] 會是一個數字 (exrp)
可是你的var1 和var2只會是true 或著false
所以不管怎樣都不會跟list[i]的值一樣
所以一定會執行else-part
也就是 puts "It's zero"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.67.182
推
04/15 21:35, , 1F
04/15 21:35, 1F
→
04/15 21:36, , 2F
04/15 21:36, 2F
推
04/15 21:41, , 3F
04/15 21:41, 3F
→
04/15 21:42, , 4F
04/15 21:42, 4F
推
04/15 21:50, , 5F
04/15 21:50, 5F
→
04/16 06:29, , 6F
04/16 06:29, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 6 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章