Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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,我在学校里得到了这个任务。我想打印偶数 print "Print any number:" inpt = gets.chomp def odd_or_even(num) if num % 2 == 0 print "even" else print "odd" end end 我没有得到任何输出。问题出在方法上,还是我是如何写出这个方程式的?我已经尝试更改了这两个选项。我发现您发布的内容存在两个问题-first gets.chomp将返回一个字符串,而您确实需要一

我在学校里得到了这个任务。我想打印偶数

print "Print any number:"
inpt = gets.chomp

def odd_or_even(num)
  if num % 2 == 0
    print "even"
  else
    print "odd"
  end
end

我没有得到任何输出。问题出在方法上,还是我是如何写出这个方程式的?我已经尝试更改了这两个选项。

我发现您发布的内容存在两个问题-first gets.chomp将返回一个字符串,而您确实需要一个整数,因此如果您想要防止非数字输入,您可能需要执行gets.to\I或Integergets。第二个问题是,打印不包含换行符,因此这可能是无输出问题的根源-也许可以尝试切换到puts?

我看到您发布的内容有两个问题-first gets.chomp将返回一个字符串,而您确实需要一个整数,所以,如果您想防止非数字输入,您可能需要执行get.to_i或Integergets。第二个问题是打印不包含换行符,因此这可能是导致“无输出”问题的原因-也许可以尝试切换到puts?

您定义了奇数或偶数方法,但从未实际调用它

您有两个选择:

采用更像脚本的方法,在不使用方法的情况下处理输入:

print 'Print any number: '
input = gets.to_i
#              ^ convert the input (which is always a string) to an integer
if input % 2 == 0
  puts 'even'
  # ^ is the same as `print` but adds a newline character at the end
  #   (unless the string ends with a newline character)
else
  puts 'odd'
end
如果要使用某个方法,则必须定义并调用该方法:

def odd_or_even(num)
  if num % 2 == 0
    puts 'even'
  else
    puts 'odd'
  end
end

print 'Print any number: '
input = gets.to_i
odd_or_even(input)
# ^ method is called here
Ruby也有很多内置的助手。您可以通过以下两行获得相同的结果:

print 'Print any number: '
puts gets.to_i.odd? ? 'odd' : 'even'
参考资料:

获取用户输入 将输入转换为整数 检查整数是否为奇数 :是否使用if表达式的内联?对:错 您定义了奇数或偶数方法,但从未实际调用它

您有两个选择:

采用更像脚本的方法,在不使用方法的情况下处理输入:

print 'Print any number: '
input = gets.to_i
#              ^ convert the input (which is always a string) to an integer
if input % 2 == 0
  puts 'even'
  # ^ is the same as `print` but adds a newline character at the end
  #   (unless the string ends with a newline character)
else
  puts 'odd'
end
如果要使用某个方法,则必须定义并调用该方法:

def odd_or_even(num)
  if num % 2 == 0
    puts 'even'
  else
    puts 'odd'
  end
end

print 'Print any number: '
input = gets.to_i
odd_or_even(input)
# ^ method is called here
Ruby也有很多内置的助手。您可以通过以下两行获得相同的结果:

print 'Print any number: '
puts gets.to_i.odd? ? 'odd' : 'even'
参考资料:

获取用户输入 将输入转换为整数 检查整数是否为奇数 :是否使用if表达式的内联?对:错
我想你必须检查你的输入数据

否则,可能会出现以下情况:

'abc'.to_i.even? #=> true
这是因为非数字字符串返回0

正如你所见,这不好

def odd_or_even(number)
  number.odd? ? 'odd' : 'even'
end

puts 'Print any number:'
input = gets.chomp

if input =~ /\D/
 puts 'It is not a number'
else
  puts "It's #{odd_or_even(input.to_i)}"
end
首先,我们使用正则表达式验证数据。如果不是一个数字,我们不会检查它是奇数还是偶数

注:

我们经常使用=~来匹配字符串和Regexp


/\D/表示任何非数字字符。

我认为您必须检查输入数据

i = 20
loop do 
  i -= 1
  next if i % 2 == 1
  print "#{i}"
  break if i <= 0
end
否则,可能会出现以下情况:

'abc'.to_i.even? #=> true
这是因为非数字字符串返回0

正如你所见,这不好

def odd_or_even(number)
  number.odd? ? 'odd' : 'even'
end

puts 'Print any number:'
input = gets.chomp

if input =~ /\D/
 puts 'It is not a number'
else
  puts "It's #{odd_or_even(input.to_i)}"
end
首先,我们使用正则表达式验证数据。如果不是一个数字,我们不会检查它是奇数还是偶数

注:

我们经常使用=~来匹配字符串和Regexp


/\D/表示任何非数字字符。

您不需要chomp,只是为了防止无效值,您可能希望使用Integervariable,但仍然没有理由chomp。Integer4\n=>4工作得非常好。您不需要chomp,只是为了防止无效值,您可能希望使用Integervariable,但仍然没有理由chomp。Integer4\n=>4工作得非常好。除了其他人所说的,我建议您使用该方法,如果num.even。。。而不是。除了其他人所说的,我建议你使用这个方法,如果num.even。。。请为你的答案添加一些上下文请为你的答案添加一些上下文
i = 20
loop do 
  i -= 1
  next if i % 2 == 1
  print "#{i}"
  break if i <= 0
end