用户输入未得到处理

user input doesn't get processed

我是一个新手,真的被这个问题困扰了。 我需要将与用户输入匹配的数组元素替换为 "X"。我究竟做错了什么?你能帮忙吗!?谢谢!

class Round 

  def start 
    display_board
    pick
    refresh_board
  end

  #displays the board in the begining of the game
  def display_board
    @board = [[1,2,3],[4,5,6],[7,8,9]]
    @board.each do |i|
      puts i.join("|")
    end
  end

  def refresh_board
    @changed_board = []
    @board.each do |i|
      if i.include?(@input)
        r = i.index(@input)
        i[r] = "X"
        @changed_board << i
      else
        @changed_board << i
      end
    end

    @changed_board.each do |i|
      puts i.join("|")
    end
  end

 #player selects a number
  def pick
    puts "player1, select a number:"
    @input = gets.chomp
  end
end

round1 = Round.new 
round1.start

方法i.include?(@input)从不returnstrue因为数组i是由Integer构成的,而@input是一个String.

事情就是这样:

[1,2,3].include?("1") #=> false

要使其生效,您可以在设置时将@input转换为Integer

另一件事:@JörgWMittag 也指出,您不需要 String#chomp,因为 to_i 也会忽略空格。

只需替换这一行:

@input = gets.chomp

与:

@input = gets.to_i

它会起作用的!