2015-06-03 51 views
-3

確保在用戶輸入陣列中的所有值我試圖定義基於用戶輸入一個數組,並希望確保每個值是1到10之間我該怎麼做1到10之間

所以我現在用的這個權利。

array = gets.chomp 

我希望用戶只輸入範圍從1到10的值。我該怎麼做?

+0

http://ruby-doc.org/core-2.2.0/Range.html –

+0

或者,如果你的意思是不是定義數組範圍從1到10的其他東西,闡明你的quesiton。 –

+0

@QPaysTaxes我只想定義一個數值從1到10的數組,但可以根據需要重複多次。我怎麼做?的 –

回答

1

你可以使用下面這樣做:

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 
+0

我正在嘗試使用get.chomps。所以我想確保輸入值不超過10.我該怎麼做? –

+0

輸入值是什麼意思? – locoboy

+0

像該用戶將陣列 –

0

...所以,你知道,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!

但是,它看起來像你想要做的是在物理上阻止用戶輸入一個數字,如1112到控制檯,該控制檯(至少在純Ruby中)是不可能的。你可以得到的最接近的是在事實之後驗證輸入,這就是這樣做的。看看Ruby的各種循環,如果你想讓它們繼續進入數組,直到它們輸入的數組有效。

請注意,@ locoboy的答案將適用於單個數字,但在嘗試驗證整個數組時或直接結果爲gets.chomp時,它會失敗。

+0

這是否適用於get.chomps? –

+0

@ShailiParikh不,它適用於一系列數字。如果你想幫助將其轉換爲數字數組,請將輸入格式添加到您的問題中。 –

+0

好的,所以我基本上必須具有從1到10的所有值,用戶將輸入這些值。有沒有辦法我可以確保用戶不輸入11或12或任何大於10 –

相關問題