我是新手,真的坚持这个问题。我需要将匹配用户输入的数组元素替换为"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
,因为数组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
它会起作用!