Arrays 以某种方式迭代输出有问题

Arrays 以某种方式迭代输出有问题,arrays,ruby,iteration,Arrays,Ruby,Iteration,我正在Ruby中练习使用数组和迭代。我能够理解代码的上下文,但在以某种方式显示输出时遇到了问题 我的预期产出是: 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 电流输出为: 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 我的代码是: class Image def initialize(image) @im

我正在Ruby中练习使用数组和迭代。我能够理解代码的上下文,但在以某种方式显示输出时遇到了问题

我的预期产出是:

0 0 0 0
0 1 0 0 
0 0 0 1
0 0 0 0 
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
电流输出为:

0 0 0 0
0 1 0 0 
0 0 0 1
0 0 0 0 
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
我的代码是:

class Image
  def initialize(image)
    @image = image
  end

  def output_image
    @image.each_index do |array|
      subarray = @image[array]
      subarray.each do |cell|
        if array[0]
          print "#{cell} \n"
        elsif array[1]
          print "#{cell} \n"
        elsif array[2]
          print "#{cell} \n"
        elsif array[3]
          print "#{cell} \n"
        end
      end
    end
  end
end

image = Image.new([
  [0, 0, 0, 0],
  [0, 1, 0, 0],
  [0, 0, 0, 1],
  [0, 0, 0, 0]
 ])

 image.output_image

我想你把事情弄得太复杂了。您可以在子数组上迭代,并用空格连接它们

def output_image
  @image.each do |image|
    puts image.join(' ')
  end
end

我想你把事情弄得太复杂了。您可以在子数组上迭代,并用空格连接它们

def output_image
  @image.each do |image|
    puts image.join(' ')
  end
end
来这里救援。用空格连接行,用回车连接结果,利润

puts @image.map { |inner| inner.join ' ' }.join $/
#⇒ 0 0 0 0
#  0 1 0 0
#  0 0 0 1
#  0 0 0 0
来这里救援。用空格连接行,用回车连接结果,利润

puts @image.map { |inner| inner.join ' ' }.join $/
#⇒ 0 0 0 0
#  0 1 0 0
#  0 0 0 1
#  0 0 0 0

干净多了!我认为应该是
put
,这样每个子数组都可以打印在自己的行上。@JustinHellreich是的,更新为使用
put
,这很好。啊!非常感谢。我没有想到加入方法。我要再看一次数组文件。更干净了!我认为应该是
put
,这样每个子数组都可以打印在自己的行上。@JustinHellreich是的,更新为使用
put
,这很好。啊!非常感谢。我没有想到加入方法。我要再看一遍数组文件,你们没必要求我们帮忙。这就是网站的目标。使用
打印“…\n”
就是问题所在
\n
在每次打印后强制您的输出开始新的一行。我理解您的观点,但在为此奋斗了10个小时后,我来寻求帮助。我用这个网站作为最后一道防线。请记住,堆栈溢出不是一个讨论列表,它更像是一本在线参考书。你的问题开始了一篇新的文章,以帮助未来的用户,因此,措辞应该详细和中肯。它可以是非正式的,虽然这个问题的答案对你有帮助,所以不是一个个人帮助网站,所以请求帮助并不合适。目标主要是帮助他人。是的。你说得对。我应该写清楚我在挣扎什么。我会记住你的建议,你没有必要向我们求助。这就是网站的目标。使用
打印“…\n”
就是问题所在
\n
在每次打印后强制您的输出开始新的一行。我理解您的观点,但在为此奋斗了10个小时后,我来寻求帮助。我用这个网站作为最后一道防线。请记住,堆栈溢出不是一个讨论列表,它更像是一本在线参考书。你的问题开始了一篇新的文章,以帮助未来的用户,因此,措辞应该详细和中肯。它可以是非正式的,虽然这个问题的答案对你有帮助,所以不是一个个人帮助网站,所以请求帮助并不合适。目标主要是帮助他人。是的。你说得对。我应该写清楚我在挣扎什么。我会记住你的建议。谢谢你的意见。我将再次查看数组文档。Join方法是我错过的为数不多的方法之一。谢谢你的投入。我将再次查看数组文档。Join方法是我错过的少数几个方法之一