Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como saber se o usuário digitou um número ou uma letra?

Eu entendi que quando usamos o gets pra armazenar uma variável, ela é do tipo fica do tipo string. Por exemplo:

a  = gets
a.class

Na saída terei String

É possível diferenciar se essa string é um número ou não? Se sim, como?

Eu quero fazer uma função que pede um número pro usuário, mas que, toda vez que o usuário não digitar um número, informe-o que ele não digitou um número e peça para que ele tente novamente.

Consegui resolver parcialmente o problema quando o número é diferente de zero já que quando uso o comando .to_i ele converte uma string diferente de números pra zero. Assim, o código ficou:

loop do
        puts "Entre com o número:"
        numero = gets.to_i
        if numero != 0
            return numero
        else
            puts "\n"
            puts "Você não digitou um número, tente novamente!"
            puts "\n"
        end
    end

Mas isso não resolve o problema pra quando o número digitado é zero.

1 resposta
solução!

Consegui resolver!

Coloquei uma condição antes que compara a string (numero) à string "0". Se for igual, retorna o zero (como inteiro). Se for diferente cai no passo que eu já tinha resolvido antes.

loop do
        puts "Digite o coeficiente \"b\":"

        numero = gets.strip
        b = numero.to_i

        if numero == "0"
            coeficientes << b
            break
        else
            if b == 0
            puts "O coeficiente 'b' precisa ser um número"
            else
                coeficientes << b
                break
            end
        end
    end