1

我是 Ruby 新手,只是不知道如何从用户那里获取数组的输入并显示它。如果有人能清楚我可以添加我的逻辑来找到最大的数字。

#!/usr/bin/ruby

puts "Enter the size of the array"
n = gets.chomp.to_i
puts "enter the array elements"
variable1=Array.new(n)

for i in (0..n)
  variable1[i]=gets.chomp.to_i
end

for i in (0..n)
  puts variable1
end  
4

4 回答 4

6

如何在一行中捕获数组?

#!/usr/bin/ruby

puts "Enter a list of numbers"

list = gets   # Input something like "1 2 3 4" or "3, 5, 6, 1"

max = list.split.map(&:to_i).max

puts "The largest number is: #{max}"
于 2012-07-06T06:00:13.473 回答
3

我相信这是一个更优雅的解决方案。

    puts "Please enter numbers separated by spaces:"
    s = gets

    a = s.split(" ")

    #Displays array
    puts a 

    #Displays max element   
    puts a.max

首先,您从用户那里收集一系列数字,然后对字符串使用 split 方法,将其转换为数组。如果您想使用其他分隔符,例如“,”,则可以编写 s.split(",")。之后,您可以使用您的逻辑来找到最大的数字,或者您可以只使用 max 方法。

于 2012-07-07T10:46:16.547 回答
3

你做得很好。但是试试这个小改变

#!/usr/bin/ruby

puts "Enter the size of the array"
n = (gets.chomp.to_i - 1)
puts "enter the array elements"
variable1=Array.new(n)

for i in (0..n)
  variable1[i]=gets.chomp.to_i
end

puts variable1

或者对于未定义数量的值,这是一种方法

#!/usr/bin/ruby

puts "enter the array elements (type 'done' to get out)"
input = gets.chomp
arr = []
while input != 'done'
  arr << input.to_i
  input = gets.chomp
end

puts arr
于 2012-07-06T06:05:41.260 回答
1

一些反馈:

  • chomp.to_i有点多余,因为后者也会删除换行符。
  • for x in y在惯用的 Ruby 代码中并不常见。它的行为基本上each与范围规则略有不同,并且可能应该在不久前从语言中删除。
  • Ruby 数组是动态的,因此无需预先初始化它们。类似的东西(1..n).map { gets.to_i }也会产生你需要的数组。
  • 然后可以像这样显示它:array.each { |n| puts n }

或者,您可以使用前面概述的方法,将数字作为ARGVstrip中的命令行参数或使用ARGF管道输入您的程序。

于 2012-07-07T11:55:59.657 回答