Начинающий Руби если еще - PullRequest
2 голосов
/ 18 ноября 2011

Я проверил, получает ли программа номер и имя, и это так. Мне интересно, почему он не печатает "Фред", когда вводится номер 1?

number = ARGF.read.chomp
names = %w{fred betty barney}
if number == 1
  puts names[0]
elsif number == 2
  puts names[1]
elsif number == 3
  puts name[2]
end

Ответы [ 4 ]

4 голосов
/ 18 ноября 2011

number, вероятно, здесь строка, но вы сравниваете ее с целым числом.

1 == '1' # false

try

number = ARGF.read.chomp.to_i # note the to_i here
names = %w{fred betty barney}
if number == 1
  puts names[0]
elsif number == 2
  puts names[1]
elsif number == 3
  puts names[2]
end

Также вы можете использовать case/when оператор, когда вы хотите выбрать другой путь, основанный на нескольких значениях одной переменной.Обычно это более чистый способ обработки этого типа потока.

number = ARGF.read.chomp.to_i
names = %w{fred betty barney}

case number
when 1
  puts names[0]
when 2
  puts names[1]
when 3
  puts names[2]
end

Или в этом случае еще более простой:

number = ARGF.read.chomp.to_i
names = %w{fred betty barney}
puts names[number-1]

должен работать.

3 голосов
/ 18 ноября 2011

Я знаю, что вы изучаете if...else, но имейте в виду, вы также можете сделать это:

number = ARGF.read.chomp.to_i - 1
names = %w{fred betty barney}

puts names[number]
2 голосов
/ 18 ноября 2011

number - это строка. Вы можете проверить это, напечатав его класс следующим образом:

p number.class

Вам нужно преобразовать number в целое число, подобное этому:

number = ARGF.read.chomp.to_i

Имейте в виду, что to_i вернет 0 для неверной строки. Делайте это только тогда, когда вы уверены в поступающих данных.

Попробуйте это на Кодовая панель .

2 голосов
/ 18 ноября 2011

number - это строка, а не целое число.Вы можете преобразовать в целое число:

number = ARGF.read.chomp.to_i

или вместо этого можете проверить строки:

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