如何从文件中读取二维数组的元素数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从文件中读取二维数组的元素数?相关的知识,希望对你有一定的参考价值。

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

[[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(这是我所期望的)。

有人可以解释我为什么我得到320而不是10

答案

你应该使用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]]

以上是关于如何从文件中读取二维数组的元素数?的主要内容,如果未能解决你的问题,请参考以下文章

Qt中如何读取csv文件到二维数组

从文件中逐行读取并存储到二维数组中

java读取文件中多个数据,放入不同数组

在二维数组中找到最小值

LEETCODE刷题 二维数组查找

C程中如何计算数组(一维及二维)占内存空间的大小