2016-05-23 5 views
1

Ich bitte den Benutzer, eine Nummer einzugeben und basierend auf dieser Nummer möchte ich bestimmte Spieler zu meinem Spiel hinzufügen.Wie fügen Sie ein Ruby-Array basierend auf Benutzereingaben hinzu?

Also, wenn sie 3 eingeben. Dann sollte der Code dreimal durchlaufen und den Benutzer nach Namen fragen. z.B.

What is the players name? Rich 
What is the players name? Tom 
What is the players name? Charles 

Dann wäre es Spieler = [ 'Reich', 'Tom', 'Charles']

irgendwelche Ideen, warum mein Code nicht korrekt? (I Figur ist mit dem range Teil zu tun, vielleicht)

+0

Wo ist 'Bereich' definiert? – Stefan

Antwort

1

Es gibt einige Fehler in Ihrem Code:

Zuerst Sie für eine Reihe fragen, ist jedoch players_amount eine Zeichenfolge. Sie sollten es mit der to_i Methode konvertieren.

Zum Iterieren über einen Bereich gibt es mehrere Möglichkeiten, dies in Ruby zu tun, aber es gibt kein Schlüsselwort range wie in Python. Für über einen Bereich iterieren (das heißt, ein Intervall), verwenden:

# Exclusive: 

(0...3).each do |i| 
    puts i 
end 
# 0 
# 1 
# 2 

# Inclusive: 

(0..3).each do |i| 
    puts i 
end 
# 0 
# 1 
# 2 
# 3 

Anstatt also Ihre for-Schleife, nur (0...players_amount).each do schreiben.

Mit diesen Änderungen hat das Programm das erwartete Verhalten. Wenn der Name jedoch in derselben Zeile der Frage angezeigt werden soll, verwenden Sie print anstelle von puts, da puts automatisch einen Zeilenumbruch am Ende der Zeichenfolge hinzufügt.

+0

Bearbeiten Sie den vollständigen Code und fügen Sie den Fehler hinzu, den Sie erhalten haben. –

+0

es funktioniert, Prost! – hellogoodbye

+0

Wenn Sie die Iterationsnummer nicht benötigen, würde ich 'x.to_i.times do ... end' bevorzugen –

0

Ich würde eine Ergänzung zu T. Claveries Antwort hinzufügen. In diesem Fall denke ich, dass Sie nur eine bestimmte Anzahl von Malen durchlaufen müssen und nichts mit dem Iterationsindex machen müssen. Auf diese Weise würde ich die for Schleife in Ihrem Code durch den folgenden ersetzen:

players_amount.times do 
    puts ('What is the players name') 
    name = gets.chomp 
    players.push(name) 
end 

Hoffe, es hilft.

+0

Sie müssten die Zeichenfolge immer noch in eine Ganzzahl mit' to_i' konvertieren. –