警告新手中包含的新手/新手错误需自担风险!
好的,试着整理一些代码来阅读和打印基于文本的迷宫文件。这就是我到目前为止所做的:
def read_maze( filename )
local_maze = []
mz_file = File.open(filename,"r")
while ! mz_file.eof? do
line = mz_file.gets.chomp
local_maze = line.scan(/./)
end
mz_file.close
return local_maze
end
puts "done"
maze = read_maze("maze1.mz")
def print_maze( maze )
maze.each {|row|
puts row.join("")
}
end
puts "made it too next step"
print_maze(maze)
这是我从另一个文件调用的maze1.mz文件表示
########
# F #
#### #
# S #
########
我在我的自定义defs中遇到方法错误,这是netbeans吐回来的
完成 快速说明:我编辑了我的C:\ errors,没有在硬盘上列出我的directoy结构
C:\ test.rb:21:in print_maze': undefined method
join'for“#”:String(NoMethodError)
太下一步了
C:\ test.rb:20:in each'
C:\test.rb:20:in
print_maze'
C:\ test.rb:25
我一直在看这个约2个小时并且无法解决#问题irb没有帮助
答案 0 :(得分:1)
更改行
local_maze = line.scan(/./)
到
local_maze << line.scan(/./)
你将打印出迷宫。 <<
将项添加到数组中。
答案 1 :(得分:1)
您想要read_maze()
的输出?
如果您想要一个包含每个字符的数组,您需要使用local_maze.concat(line.scan(/./))
如果你想要一个数组数组,每个数组都包含给定行上的每个字符,那么你需要使用local_maze << line.scan(/./)
通过你的print_maze()
我想你想要最后一个,在这种情况下尝试更简单的事情:
def read_maze(filename)
File.open(filename) do |f|
f.collect { |line| line.chomp.scan(/./) }
end
end
def print_maze(m)
m.each { |row| puts row.join("") }
end
maze = read_maze("maze1.mz")
print_maze(maze)
答案 2 :(得分:0)
join适用于数组,不适用于字符串
答案 3 :(得分:0)
您也可以将line.chomp.scan(/./)
替换为line.chomp.to_a
-
它更清晰有效