ruby条件逻辑

时间:2012-03-31 18:07:35

标签: ruby

我想要制作的程序几乎已经完成,但是我遇到了表达式操作符的问题。我似乎无法正确表达它。我希望返回“整数关闭”,如果用一个数字2和3.我还希望数字1“远”与其他值相差2或更多。

例如

(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

1 个答案:

答案 0 :(得分:2)

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

这不是你想要的。每当true或数字不为零时,这将评估为number1 > number2(这是不可能的,因为它始终至少是空字符串。)作为一种风格问题,then是不必要的

对于您的程序,如果用户想要退出,则不希望用户输入数字2和3。所以在第一个之后测试退出。重构会给你这样的东西:

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代替chop,因为后者会随意删除最后一个字符,而前一个字符专门用于删除\n\r