質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

2回答

158閲覧

Ruby 初心者からの質問です。if文がうまく条件分岐がうまくできません。

taiyak13

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

0クリップ

投稿2020/10/31 09:12

前提・実現したいこと

プログラミング初心者です。
以下のコードを実行し、5を入力しましたが、「数字は5です。」と表示されずに「数字は5でも7でもありません。」と表示されます。なぜでしょうか。

該当のソースコード

ruby

coding: utf-8

number = gets
if number == 5
puts "数字は5です。"
elsif number == 7
puts "数字は7です。"
else
puts "数字は5でも7でもありません。"
end

補足情報

Atomとmacのターミナルを使っています。

Sean2014👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/31 09:23

型の概念は分かりますか?
taiyak13

2020/10/31 09:25

数字か文字列か、でしたかね? この場合は文字列として数字を扱うんでしょうか?
m.ts10806

2020/10/31 09:27

引数の型を確認したら分かります(確認の仕方は調べて出てくる内容です)
taiyak13

2020/10/31 09:27

となると、.to_iを使うんですか?
taiyak13

2020/10/31 09:27

わかりました
m.ts10806

2020/10/31 09:28

やってみてから言ってください…。 要件がちゃんと書いてないのでなんとも言えないのです。 数値を知りたいのか?引数をどうしたいのか。要件なので決めてください。課題なのであれば課題内容を正しく確認しましょう。
taiyak13

2020/10/31 09:33

私は5を入力すると「数字は5です。」と表示され、7を入力すると「数字は7です。」と表示される。またその数字以外が入力されると「数字は5でも7でもありません。」と表示がされるプログラムが作りたいんです。課題ではなく、ただプログラミングに慣れるためにやっております。数字はなんでもいいです。用件をはっきりと書いていなくていなくてすみません。
taiyak13

2020/10/31 09:37

numberを数値に変換すると成功しました。初めての質問であまりうまく質問できていませんでした。すみません。ありがとうございました。
m.ts10806

2020/10/31 09:39

質問は編集できますので、適宜追記してください。 あとコードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 不明瞭な点や不備を指摘されているなら質問を修正すれば良いのです。
guest

回答2

0

numberに格納された値の型が文字列なのに、if文ではif number == 5というように、文字の"5"と数字の5を比較しているからイコール関係が成立せず、条件に当てはまらないとみなされているようです。

従って、文字列と文字列を比べるか、数字と数字を比べるのどちらかにして、データの型を揃える必要があると思います。

if number == "5"またはif number.to_i == 5にしてみてください。これでデータ型が揃って期待通りの値比較ができるはずです。

投稿2020/10/31 09:42

Sean2014

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

number = gets

文字列をnumber に設定してます

if number == 5

数値の5と比較してます。
これではまずいです。
文字列の”5”と比較しましょう

投稿2020/10/31 09:21

y_waiwai

総合スコア87778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taiyak13

2020/10/31 09:24

ダブルクオーテーションをつけるということですか
taiyak13

2020/10/31 09:26

.to_iが必要なんですかね?
y_waiwai

2020/10/31 09:30

そこらへんはいろいろやってみましょう。 文字列と数値を比較してるのが問題なので、 数値どおし、あるいは文字列どおし、とする必要があります ・文字列を数値に変換して比較 ・比較を文字列にする のどちらかにする必要があります
taiyak13

2020/10/31 09:34

なるほど。試してみます。ありがとうございます。
taiyak13

2020/10/31 09:36

numberを数値に変換すると成功しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問