0

次のプログラムは、ユーザーから 2 つの入力 (カンマ区切り) を受け取ります。

puts "Enter the code"
input_codes = gets.split(',')
puts "your given code is: "

code_1 = input_codes[0]
code_2 = input_codes[1]

puts code_1=='GEO'
puts code_2=='TYP'

出力は次のとおりです。

Enter the code
> GEO,TYP

true
false

どちらの場合も印刷trueする必要がありますよね?false最後のケースで印刷されるのはなぜですか? 私は何が欠けていますか?

編集:ええ、最初に欠けていた余分な改行文字がありました。tadman の助けを借りて問題を修正しました。そして、ええ、それ以来、 inspectはかなりクールで便利でした!

4

2 に答える 2

3

おそらく、削除していない入力に改行があります。ファイルからデータを処理するときはchomp、入力値に注意してください。さらによいのは、 which を呼び出しstripて先頭と末尾のスペースを削除することです。

gets.chomp.split(',')

診断を行おうとするときはいつでも、「見えない」文字を表示することが重要です:

puts code_2.inspect
# "TYP\n"

これにより、問題がより早く明らかになった可能性があります。inspectただし、独自のカスタマイズされたエミッターを持つカスタム クラスでは誤解を招く可能性があります。常に信頼できるとは限りませんが、通常は開始するのに適した場所です。

于 2012-12-10T16:35:25.490 に答える
2

文字列の最後に改行があります。それを取り除くだけです。

input_codes = gets.strip.split(',')
于 2012-12-10T16:34:40.537 に答える