2016-07-19 4 views
0

Also habe ich dieses Stück Code geschrieben mit Zahlen zu spielen, um und die until-Schleife:Ruby bis immer als falsch validiert?

number = rand(10) 
puts number 

puts "Guess the number" 
guess = gets.chomp 


until guess == number 
    puts "Guess again!" 
    guess = gets.chomp 
end 

puts "You've guessed it right! The number is #{guess} 

Aber aus irgendeinem Grunde ist es immer in dem UNTIL-Schleife stecken, und ich bin nicht sicher, warum. Ich gebe die Zufallszahl an, um zu wissen, dass ich richtig rate und den Code ausprobiere. Ich bin komplett neu in Ruby, also denke ich, es ist eine sehr offensichtliche Sache, die ich vermisse, aber ich sehe es einfach nicht.

Aus meiner Sicht, wann immer ich für die Schätzung erneut, diese Schätzung, die von der bis Schleife mit until guess == number validiert.

Wer kann mir helfen, dies zu klären?

+3

Sie vergleichen eine Zahl mit einem Zeichen. Ändern Sie "gets.chomp" in "gets.chomp.to_i" (oder nur "gets.to_i") oder "number = rand (10) .to_s" würde es tun. –

Antwort

2

Der Grund ist einfach, und das ist, dass Sie die Benutzereingabe nicht in eine ganze Zahl umwandeln können.

das heißt, wenn I

number = gets.chomp 

schreiben und I-Typ 1 für die Zahl, dann ist die number Variable gleich der Zeichenfolge"1", nicht die ganze Zahl 1.

Um dies zu beheben, nur guess = gets.chomp.to_i

+0

Ich wusste, dass es etwas sehr Offensichtliches war. Zeichenfolgen werden nicht mit Zeichen verglichen, auch wenn die Zeichenfolge nur aus numerischen Werten besteht. Daran habe ich nicht gedacht. Danke! – Kevinvhengst

+0

Kein Problem. Es ist üblich, die Antwort zu akzeptieren, wenn es Ihr Problem gelöst hat. –

+0

Ich weiß. Ich werde es in genau 9 Minuten schaffen: P – Kevinvhengst

1

Statt guess = gets.chomp verwenden (der einen String der Benutzereingabe angezeigt werden kann), verwendet guess = gets.to_i to_i Methode (die Benutzereingabe in der ganzen Zahl konvertiert) wird das Element in der ganzen Zahl konvertiert und wird /n Zeichen fallen, da es nicht Teil der Ganzzahl ist. Sie müssen keine .chomp Methode hinzufügen.

Verwandte Themen