我是新手,真的遇到了这个问题。 我需要匹配用户输入的数组元素替换为“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
答案 0 :(得分:0)
方法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
它会起作用!