2017-02-09 57 views
0

我是一個新手,並且真的陷入了這個問題。 我需要匹配用戶輸入的數組元素替換爲「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

的方法,因爲該陣列iIntegeri.include?(@input)永遠不會返回true,和@inputString

這是發生了什麼:

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

要使其工作,你可以在設置時,其轉換@inputInteger。另一件事:同樣由@JörgWMittag指出,您不需要String#chomp,因爲to_i也會忽略空格。

只需更換這行:

@input = gets.chomp 

有:

@input = gets.to_i 

,也將努力!

+0

'String#to_i'忽略空白,不需要''chomp'它。 –

+0

它工作!你搖滾! – rstreet

+0

@JörgWMittag謝謝,我用你的建議編輯了答案 – mrlew