代码之家  ›  专栏  ›  技术社区  ›  Beast_Code

如何请求用户输入并存储输入,然后显示

  •  1
  • Beast_Code  · 技术社区  · 12 年前

    我正在尝试创建一个简单的交互式Ruby应用程序。我希望用户能够输入信息,然后让程序显示输入的信息。

    class Player
      def initialize(name, position, team)
        @name = name
        @position = position
        @team = team
      end
    
      def get_player_info
        puts "Who is your favorite NFL player?"
        name = gets.chomp
    
        puts "What position does #{name} play?"
        position = gets.chomp
    
        puts "What team does #{name} play for?"
        team = gets.chomp
      end
    
      def player_info()
        "#{@name} plays #{@position} for the #{@team}."
      end
    
    end
    
    # Get player info by calling method
    get_player_info()
    
    # Display player info
    player_info()
    

    现在,我收到了以下错误:

    object_oriented.rb:26:in `<main>': undefined method `get_player_info' for main:Objec
    t (NoMethodError)
    

    我在这里缺少什么?

    1 回复  |  直到 12 年前
        1
  •  3
  •   jstim    12 年前

    您正在调用的方法是 Player 类,这意味着您需要创建 游戏者 以便呼叫他们。

    如果您想创建一个新的类(使用 Player.new ),您需要提供所有三个值才能使其工作( Player.new("Mike", "Center", "Spartans") ). 这不符合您想要在实例方法中设置变量的要求。

    要评论现有代码,我不会使用 chomp 内部 游戏者 班这个 游戏者 类应该只关注玩家的状态。如果你想设置值,我会在外面做所有的提示。

    class Player
      attr_accessor :name, :position, :team
    
      def player_info
        "#{name} plays #{position} for #{team}"
      end
    end
    
    player = Player.new
    
    puts "Who is your favorite NFL player?"
    player.name = gets.chomp
    
    puts "What position does #{player.name} play?"
    player.position = gets.chomp
    
    puts "What team does #{player.name} play for?"
    player.team = gets.chomp
    
    puts player.player_info
    # => "Mike plays Center for Spartans"
    
    推荐文章