簡體   English   中英

使用gets.chomp.to_i檢查number是否為ruby中的整數

[英]Checking if number is an integer in ruby using gets.chomp.to_i

我打算檢查給定的輸入是否為整數。 gets.chomp以字符串gets.chomp獲取輸入,然后使用to_i將其轉換為整數。 如果我輸入abcd並使用classis_a(Integer) ,則始終表示它是整數。

x = gets.chomp.to_i
if x.is_a?(Integer)
    puts "It's an integer"
else
    puts "It's a string"
end

如何檢查輸入是整數還是字符串?

你的問題

由於您使用.to_i將輸入轉換為整數, x.is_a?(Integer)即使您的字符串中不包含任何數字, x.is_a?(Integer)始終為true 有關.to_i行為的更多信息, .to_i 答案

使用Integer()而不是.to_i轉換輸入。

Integer()無法將您的輸入轉換為整數時,它將引發異常,因此您可以執行以下操作:

input = gets.chomp
x = Integer(input) rescue false
if x
    puts "It's an integer"
else
    puts "It's a string"
end

您可以使用正則表達式:

boolean = gets.match?(/\A\d+\n\z/)

另一種方法可能是:

x = gets.chomp
x === x.to_i ? "It's an integer" : "It'a a string"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM