用户输入未得到处理



我是新手,真的坚持这个问题。我需要将匹配用户输入的数组元素替换为"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)从不返回true,因为数组iInteger组成,而@input是一个String

这就是

正在发生的事情:

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

要使其正常工作,您可以在设置时将@input转换为Integer

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

只需替换此行:

@input = gets.chomp

跟:

@input = gets.to_i

它会起作用!

相关内容

  • 没有找到相关文章

最新更新