2017-10-02 2 views
-2

次のコードは常に「ない」出力「ではない」を出力しますか?コードは常に

+0

は#!/ usr/bin/ruby​​ですか? 。あなたは "完了"して置くことができますか?それは実行可能ですか? – zee

+1

@sawa:あなたの編集には注意してください。もともと質問は、それは常に "数字が偶数ではない"と表示していると述べました。編集後、何も印刷されないことが示されます。それはまったく別の問題*です。 –

+0

@JörgWMittagごめんなさい、指摘に感謝します。 – sawa

答えて

3

gets()メソッドは、タイプStringのオブジェクトを返します。

あなたはStringオブジェクトに%()を呼び出すと、戻り値は新しいStringオブジェクト(通常はそれがテキストを変更します。You can read more about string formatting here)です。

Stringオブジェクトがないため、== 0のif/elseは常に同じパスを使用します。

数値のような戻り値gets()を使用する場合は、最初に変換する必要があります。最も簡単なアプローチは、おそらくStringオブジェクトでto_i()メソッドを使用することです。これは新しい 'Integer'オブジェクトを返します。ユーザーの入力が常に整数(たとえば3.14または1.5)でない場合は、別の方法を使用する必要があります。

最後の例:gets()の結果は、TestNumberというconstantに保存されます。定数は通常の変数とは異なり、意図的に使用していないと問題になるでしょう。通常の変数は大文字で始まらない。 (You can read more about ruby variables here)。ルビーでは、次のような変数名を書く必要があります:​​。

+0

質問のタイトルは、最初に、サンプルコードは常に "数字が偶数ではない"と表示していました。 – Pend

0

Testnumber変数が操作中に文字列として解釈される可能性があります。 Ruby Modulo Division

:testnumは最初の整数に変換されますが、中に入れた場合でも、100は同様の問題がここで見つけることができます100

「100」と整数でない、それはそのstirngとして解釈されることができたと言うことを確認してください

0

TestNumberを文字列から整数に変換する必要があります。入力に改行や整数に一致しないその他の不要な文字が含まれているためです。

TestNumber = gets.to_iを使用してテスト前に整数に変換します。

関連する問題