?確保在用戶輸入陣列中的所有值我試圖定義基於用戶輸入一個數組,並希望確保每個值是1到10之間我該怎麼做1到10之間
所以我現在用的這個權利。
array = gets.chomp
我希望用戶只輸入範圍從1到10的值。我該怎麼做?
?確保在用戶輸入陣列中的所有值我試圖定義基於用戶輸入一個數組,並希望確保每個值是1到10之間我該怎麼做1到10之間
所以我現在用的這個權利。
array = gets.chomp
我希望用戶只輸入範圍從1到10的值。我該怎麼做?
你可以使用下面這樣做:
def verify(input)
(1..10).to_a.include?(input)
end
#input is user input
if verify(input)
#do some stuff
else
#don't do stuff
end
...所以,你知道,gets.chomp
不返回數組。它返回一個字符串。像這樣的東西會給你你想要的數組:
array = gets.chomp.split(/\D/).map { |e| e.to_i }
,從一個字符串(這恰好包含,
- 分隔值)爲數字數組轉換它。
puts 'The array you entered was invalid!' if array.any? { |item| !(1..10).include?(item) }
那經過並檢查值的any
爲!(1..10).include?(item)
返回true,當且僅當範圍[1,10]
(含)包含item
返回真。如果是這樣,它打印出The array you entered was invalid!
。
但是,它看起來像你想要做的是在物理上阻止用戶輸入一個數字,如11
或12
到控制檯,該控制檯(至少在純Ruby中)是不可能的。你可以得到的最接近的是在事實之後驗證輸入,這就是這樣做的。看看Ruby的各種循環,如果你想讓它們繼續進入數組,直到它們輸入的數組有效。
請注意,@ locoboy的答案將適用於單個數字,但在嘗試驗證整個數組時或直接結果爲gets.chomp
時,它會失敗。
這是否適用於get.chomps? –
@ShailiParikh不,它適用於一系列數字。如果你想幫助將其轉換爲數字數組,請將輸入格式添加到您的問題中。 –
好的,所以我基本上必須具有從1到10的所有值,用戶將輸入這些值。有沒有辦法我可以確保用戶不輸入11或12或任何大於10 –
http://ruby-doc.org/core-2.2.0/Range.html –
或者,如果你的意思是不是定義數組範圍從1到10的其他東西,闡明你的quesiton。 –
@QPaysTaxes我只想定義一個數值從1到10的數組,但可以根據需要重複多次。我怎麼做?的 –