<- Schleifen
Konditionale ->

Benutzereingaben verarbeiten

Schreiben wir nun ein Programm, das den Benutzer begrüßt. Wir fragen ihn nach seinem Namen und sagen dann 'hallo'. Wir benutzen die gets Methode, um die Benutzereingabe zu erhalten (als Zeichenkette).

Speichern Sie dies und starten Sie es:

Was ist passiert? Warum ist das Programm in die nächste Zeile gegangen?

Es ist in die nächste Zeile gegangen, weil Sie das Zeichen für den Zeilenwechsel eingegeben haben (also Enter).

Dies wird mehr Sinn machen, wenn wir zurück zu irb gehen. Starten Sie irb und geben Sie die gets Zeile ein. Wenn der Computer auf die Eingabe wartet, dann geben Sie den Namen ein. Passen Sie auf, was passiert:

Was ist das "\n" am Ende der Zeichenkette?

Das "\n" repräsentiert das Zeichen für Neue Zeile. Dies ist das Zeichen, das ihre Tastatur sendet, wenn Sie die Enter Taste drücken.

Tipp: Schauen Sie sich an, wie wir irb benutzt haben um rauszufinden, was geschehen ist. Wann immer etwas nicht so funktioniert, wie Sie es erwarten, ist es eine gute Idee, es in irb auszuprobieren.

Dieser ärgerliche Zeilenwechsel!

Gut, wir wissen nun, was falsch ist. Aber wie werden wir diesen ärgerlichen Zeilenwechsel los?

Zeichenketten in Ruby kommen mit der Methode String#chomp einher genau für diesen Zweck. Gehen wir zurück zu irb, so dass wir alles in Aktion sehen können.

Wunderbar! Die Methode String#chomp gibt Ihnen die Zeichenkette zurück, aber ohne das Neue Zeile-Zeichen am Ende. Somit können wir nun schreiben:

Beachten Sie, dass name immernoch das Zeichen für den Zeilenwechsel enthält. Es ist chomped_name, was wir wollen. Aber warum extra eine neue Variable hierfür? Es ist besser einfach zu schreiben:


>> name = name.chomp
                       

Nun hat name das Zeilenwechsel-Zeichen nicht mehr enthalten.

Zurück zu unserem Programm

Nun gehen wir zurück zu unserem Programm und lösen das Problem.

Hier eine geschickte Sache in Ruby:

  1. chomp ist eine String Methode (String#chomp).
  2. gets gibt Ihnen einen String zurück.

Daher können Sie gets.chomp schreiben, um String#chomp anzuwenden auf was auch immer gets zurückliefert. In anderen Worten, wir können schreiben:

Ist das nicht wunderschön? Geben Sie dies ein und starten Sie es:

Übungen

  1. Schreiben Sie ein Programm, welches 2 Wörter annimmt und diese in umgekehrter Reihenfolge wieder ausgibt.

  2. Schreiben Sie ein Programm, das sich so verhält:

    Nehmen Sie an, dass das Jahr, in dem der Benutzer geboren wurde, einfach das derzeitige Jahr minus das Alter ist. Denken Sie an String#to_i.

  3. Schreiben Sie ein Programm, das den Benutzer nach einer Zahl und einem Satz fragt, und den Satz so oft ausgibt wie der Betrag der Zahl ist. Es sollte so aussehen:

    Es gibt mehr als eine Möglichkeit das Programm zu schreiben.

  4. Was denken Sie, macht diese Zeile Code?:

    
    number = gets.chomp.to_i  
                           

    Versuchen Sie es in irb.

  5. Schreiben Sie ein Programm, dass eine Zahl vom Benutzer verlangt und die Fakultät berechnet. Es sollte sich ähnlich zu dem hier verhalten:

<- Schleifen
Konditionale ->