Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 没有得到预期的答案_Ruby - Fatal编程技术网

Ruby 没有得到预期的答案

Ruby 没有得到预期的答案,ruby,Ruby,代码未返回正确答案 我已经厌倦了给动物选择赋值。我把它放在def里和外面 puts "Choose your favorite: cats or dogs" choose = gets cats = 1 dogs = 2 def favorite_animal (number) remainder_when_divided_by_2 = number % 2 if remainder_when_divided_by_2 == 0 return "Ken doe

代码未返回正确答案

我已经厌倦了给动物选择赋值。我把它放在def里和外面

puts "Choose your favorite: cats or dogs"
choose = gets
cats = 1
dogs = 2

def favorite_animal (number)

    remainder_when_divided_by_2 = number % 2

    if remainder_when_divided_by_2 == 0
       return "Ken does too."
    end

    if remainder_when_divided_by_2 == 1
       return "Dogs are better!"
    end
end

如果用户输入Cats,则应显示答案“Ken也是!”。如果用户输入狗,则应显示“狗更好!”的答案。我得到的答案是1或2。

有几件事:

  • 你必须在某处调用方法
    favorite\u animal
    ;你只定义了它
  • 您的猫/狗没有“映射”到任何东西,因此在调用
    最喜爱的动物
    方法之前,您需要一些逻辑将输入转换为数字
  • 您仍然需要对方法中返回的值进行处理(
    put
    或其他操作以使其显示)
下面是一个最简单的例子,可能对您了解上述3个问题很有用

def favorite_animal (number)
    remainder_when_divided_by_2 = number % 2

    if remainder_when_divided_by_2 == 0
      return "Ken does too."
    end

    if remainder_when_divided_by_2 == 1
      return "Dogs are better!"
    end
end

puts "Choose your favorite: cats or dogs"
choose = gets.chomp

answer = if choose == 'cats'
  1
else
  2
end

puts favorite_animal(answer)
试试这个

loop do
  puts "Choose your favorite: cats or dogs"
  case gets.chomp
  when "cats"
    break "Ken does too."
  when "dogs"
    break "Dogs are better!"
  else
    puts "That answer is invalid. Try again"
  end
end
下面是一个使用此代码的会话示例,我的答案是“猪”和“狗”

看。对于大多数循环,许多rubyist使用
loop
和关键字
break
,而不是
while
until
。(
for
从不使用循环)

对于你正在做的事情,你不需要一个方法,但是如果你想要一个,就添加一行

def favorite_animal
end
在开头和结尾

def favorite_animal
end
最后。然后

favorite_animal
  #=> "Dogs are better!"

如果我能给出与之前相同的答案。

我看不出你在哪里调用
最喜欢的动物
@JoshBrody:如果输入是
“cats\n”
,那就没什么好处了。谢谢你的建议。我已经上第三天课了,所以我不知道该怎么做你的建议。我厌倦了像这样键入Cats=gets.number.to_I,但它会显示一条错误消息。我把最喜欢的动物放在末尾,这样它会发布答案,但这会显示一条错误消息。因此,您正在参加某种有组织的教育活动(“课堂”)。你能不能请教授或同学跟你一起把这件事做完?Stackoverflow不适合指导式沟通。看起来你需要一些关于过去三天内容的帮助。