如何确定用户输入数字而不是字符串?

时间:2019-06-11 21:01:49

标签: ruby

我希望用户输入一个数字。如果用户输入了一个字符,我想抛出一个错误。

我试图解析值。

render() {
  return (
    <div>
      <header className="jumbotron jumbotron-fluid py-4">
        <div className="container">
          <h1><Link to='/'>Adopt a Pet</Link></h1>
        </div>
      </header>

      <main className="container">
        <div className="row">
          <div className="col-3">
            <AboutNav />
          </div>
          <div className="col-9">
            <Switch>
              <Route exact path='/' render={() => 
                <PetList pets={this.state.pets} />
              } />
              <Route exact path='/about' component={AboutPage} />
              <Route exact path='/resources' component={ResourcesPage} />
              <Redirect to='/' />
            </Switch>
          </div>
        </div>
      </main>

      <footer className="container">
        <small>Images from <a href="http://www.seattlehumane.org/adoption/dogs">Seattle Humane Society</a></small>
      </footer>
    </div>
  );
}

2 个答案:

答案 0 :(得分:1)

通过.to_f运行字符串时,字符串的值为0.0,因此添加要求数字大于1的or语句应确保未输入任何字符串。

def pruefeZeitbudget(eingabeZeitaufwand)
    @validierungsWert = eingabeZeitaufwand.to_f
    loop do
      if @validierungsWert > 24 or @validierungsWert < 1 
        puts 'Wert überschreitet das Tagesmaximum von 24 Stunden. Erneute Eingabe!'
        @validierungsWert = gets.chomp.to_f
      else
        puts 'Eingabe okay.'
        break
      end
    end
end

答案 1 :(得分:1)

您可以使用Float(eingabeZeitaufwand)。如果输入无效的Float类型,则会引发错误。否则,它将返回浮点值。

完整的代码应该喜欢

def pruefeZeitbudget
  begin 
    @validierungsWert = Float(gets.chomp)
    loop do
      if @validierungsWert > 24
        puts 'Wert überschreitet das Tagesmaximum von 24 Stunden. Erneute Eingabe!'
      else
        puts 'Eingabe okay.'
        break
      end
    end
  rescue
    puts "Invalid input"
  end
end