2012-03-31 17 views
1

私のプログラムはほぼ完了していますが、式演算子に問題があります。正しい表現はできません。私は数字2のための1と3で、私はまた、数1は「遠い」2以上の両方によって他の値と異なる場合は、「近い整数」を返すようにしたい。ruby​​条件付き論理

(1、2、10 )近い整数
(5、1、9)整数→→これまで

loop do 

     puts"enter each number then hit enter quit to end" 
    number1 = STDIN.gets 
    number1.chop! 
    number2 = STDIN.gets 
    number2.chop! 
    number3 = STDIN.gets 
    number3.chop! 

    numbers = [number1,number2,number3] 
    puts numbers.inspect 
    if number1 > number2 or number3 then 
     puts "Integers close" 
    end 
     if number2 < number3 then 
     puts"Integers far" 
     end 
     break if number1 == "quit" 
    end 
+0

'if number1> number2 || number1> number3 then ... ' –

+0

最後に 'quit'をテストするのは無理です。 –

+0

違いを確認していません。減算をする必要があります。また、あなたの説明から、*すべての数字が2以上異なる場合は遠くに報告するつもりであるかどうか、あるいは最初のものと他のものとを単に比較しているかどうかはわかりません。 –

答えて

2
if number1 > number2 or number3 then 
     puts "Integers close" 
    end 

これはnumber1 > number2または数がnilでない時はいつでもあなたが(それは。これはtrueと評価されますしたいものをやっていませんそれは不可能です常に少なくとも空文字列になります)。スタイルの問題として、thenは不要です。

プログラムの場合、終了する場合は、ユーザーが2と3の数字を入力する必要はありません。だから、最初のテストの後にテストをやめる。前者は、具体的\n\rを除去するように設計されている間、後者は任意に最後の文字を削除しているので、代わりにchop

loop do 
    puts "enter each number then hit enter quit to end" 
    number1 = STDIN.gets 
    number1.chomp! 
    exit if number1 == "quit" 
    number2 = STDIN.gets 
    number2.chomp! 
    number3 = STDIN.gets 
    number3.chomp! 

    numbers = [number1,number2,number3] 
    if number1 > number2 or number1 > number3 
     puts "Integers close" 
    elsif number2 < number3 
     puts"Integers far" 
    end 
end 

使用chomp:リファクタリングはあなたにこのような何かを与えるだろう。