在一行中打印数组的内容

4
我刚开始学习Ruby,正在尝试使用数组。我想要将数组打印在单行上。 以下是代码块(请忽略任何错误):
array=[]

puts "Choose an option: ","1.Push, 2.Pop, 3.Display Length"
choice=gets.to_i
while choice!=4
if choice==1
    puts "enter Number of elements to be pushed"
    n=gets.to_i
    n.times do
      puts "Enter element"
    el=gets.to_s
    array.push el
    end
  puts array
elsif choice==2
    puts array.pop

elsif choice==3
    puts array.length

else
  puts "invalid"
end
end

当我在if choice==1中打印我的数组时,我得到了所有输出在不同行上的结果, 例如:
hello
i
am
beginner
to
ruby

有没有办法将输出放在单行中? 例如:hello i am beginner to ruby 编辑:我甚至尝试过使用puts array.join(' '),但也不起作用。

1
puts array.join(' ') - tckmn
我甚至尝试过这个,但它会在新行上打印并带有空格。 - pratik watwani
1
你的字符串中有换行符号;你应该使用 chomp 函数处理输入。 - Dave Newton
3个回答

13

首先,

puts array

应该是

puts array.join(' ')

默认情况下,puts会将每个元素单独输出到一行上。

其次,

el=gets.to_s

应该是

el = gets.chomp

gets 返回一个字符串,因此将字符串转换为字符串没有什么意义。但是 gets 返回的字符串也会以换行符结尾,因此您需要使用 chomp 去掉该换行符。


3

如果您想将整个数组打印到屏幕上,请尝试使用p array,而不是puts array


1
刚接触 Ruby!我刚试了一下:

New to Ruby as well! I just tried:

puts "#{array.inspect}"

其中array = [2 3 4 5 6 77 88]。结果如下:

["2", "3", "4", "5", "6", "77", "88"]

如果需要快速修复,可以使用单行打印输出。但是array.join(' ')更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接