2016-09-29 7 views
0

ここで私が不足しているものが不思議です。私は学校向けのプログラムを持っており、プログラムの一部では入力文字列の長さを測定する必要があります。私はそれが "if String == 6"としてレイアウトされています。これは下のコードで見ることができます。私の教授はむしろそれを変数に格納し、それを測定するために.lengthメソッドを使用することになります。彼の正確な言葉は次の通りです: "チケット番号が6文字より大きいかどうかを調べるには、変数に格納する必要があります。そして、19行目で、ticket.length == 6を使って確認できます。文字列の長さを測定する変数を作成する

私は彼の方法を試してみましたが、 "ticket_number.length == 6"を入れました。それはエラーを返します。私はなぜ、なぜisnt "ticket_number"測定する必要がある変数はわからない?または、チケットの長さだけの別の変数を作成する必要がありますか?私は簡単な答えがあると確信しています、私はちょうどそれを見つけることができないようです。すべてのヘルプの事前のおかげで!ここでの問題のカップルが、最大のものがあります

begin 
    print "Please enter your six-digit ticket number." 

    ticket_number=gets.chomp.to_i 

    ones_digit=ticket_number%10 

    truncated_number=ticket_number/10.floor 

    remainder=truncated_number%7 

    if String=6 and ones_digit==remainder and ticket_number>0 

    print "Your ticket number is valid." 

    else 
    print "Your ticket number is invalid." 
    end 
end while ticket_number>0 
+0

文字列の長さを測定したと思いましたか?または、むしろ、それが= 6であることを確認しました –

+0

最初から入力を入力したときは、すでに変数があります。 – BoeNoe

+1

このプログラムをどのように実行しているのか、入力した情報を投稿し、完全で正確なエラーメッセージを投稿する必要があります。たとえそれがあなたにナンセンスのように見えるとしても、それはプログラマーに、何が間違っているかについてのかなり良いヒントを与えるでしょう。 [mcve]を参照してください。 –

答えて

3

が整数に変換すると、あなたは長さ対テストするためにあなたの機会を放棄しました意味である:

ticket_number = gets.chomp 

if (ticket_number.length != 6) 
    puts "Your ticket number must be six digits" 

    next 
end 

あなたが事後的に変換することができます:

ticket_number = ticket_number.to_i 

次に計算します。

チケット番号を指定すると、有効性によってはtrueまたはが返されることが理想的です。これはディスプレイとループロジックから切り離し、物事を単純化します。

+0

ありがとう、私はそれが何か簡単だと思った。私は3週間も経たないうちに、このすべてにはまったく新しいものです。 –

+0

新しいものは何も間違っていません。ルビーは特に学ぶ人には寛容ですが、その意味を理解できないことはできないことを忘れないでください。エラーは最初は混乱する可能性がありますが、間もなく認識するパターンがいくつかあり、欠落している方法が最も一般的です。対話しているオブジェクトの '.class'をチェックし、通常はそのクラスのドキュメントを参照して、有効なメソッドのリストを取得することができます。例:[Integer](https://ruby-doc.org/core-2.3.1/Integer.html)および[String](http://ruby-doc.org/core-2.3.1/String)。 html)。 – tadman

関連する問題