рубиновая условная логика - PullRequest
1 голос
/ 31 марта 2012

Моя программа, которую я хочу создать, почти завершена, но у меня возникли проблемы с оператором выражений. Не могу найти правильных выражений для этого.Я хочу вернуть «Целое число близко», если по одному для чисел 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 Ответ

2 голосов
/ 01 апреля 2012
if number1 > number2 or number3 then
      puts "Integers close"
    end

Это не делает то, что вы хотите. Это значение будет равно true всякий раз, когда number1 > number2 или число не равно nil (что невозможно, поскольку это всегда будет хотя бы пустая строка.) В качестве стиля 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...