代码之家  ›  专栏  ›  技术社区  ›  Nifriz

如何从文件中找到二维数组的元素数?

  •  2
  • Nifriz  · 技术社区  · 7 年前

    我有档案。在文件中,我存储了一个二维数组,如下所示:

    [[0, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 1, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
    

    数组的长度可能不同,它们并不总是10个元素长。

    我使用以下方法从文件中读取数组:

    map = IO.readlines("test.txt")
    

    当我打印结果时使用:

    map.each {|x| puts "#{x}"}
    

    输出是我所期望的。但如果我尝试使用以下方法获取行长度:

    puts map[0].length
    

    有人能解释一下我为什么 320 而不是 10

    1 回复  |  直到 7 年前
        1
  •  5
  •   Aleksei Matiushkin    7 年前

    而不是 IO#readlines JSON#parse 因为它是一个有效的json:

    require 'json'    
    JSON.parse(File.read("test.txt"))
    #⇒ [[0, 0, 1, 0, 1, 0, 1, 0, 1, 0],
    #   [0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
    #   [0, 0, 0, 0, 1, 1, 1, 1, 0, 0],
    #   [0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
    #   [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
    #   [0, 0, 0, 0, 0, 0, 1, 1, 1, 0],
    #   [0, 1, 1, 0, 1, 0, 1, 0, 1, 0],
    #   [0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
    #   [0, 0, 0, 1, 0, 0, 0, 1, 0, 0],
    #   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]