用户输入未得到处理
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
它会起作用的!
我是一个新手,真的被这个问题困扰了。 我需要将与用户输入匹配的数组元素替换为 "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
它会起作用的!