Я относительно новый студент Ruby, и хотя я могу сказать, что это никогда не будет языком, который я предпочитаю, мне хотелось бы хотя бы понять его, потому что это язык шлюза. Для моего проекта нам поручено решить лабиринт, переданный в многомерный массив. Мы не изучили рекурсию или какие-либо передовые методы. Это обзор. Моя конкретная проблема в моем коде заключается в том, что в моем while loop Я получаю сообщение об ошибке для значения, которое я передаю в свой массив.Ruby programming Почему цикл While генерирует (NoMethodError)?
Р.Б.: 60 в `: неопределенный метод` [] 'для ноля: NilClass (NoMethodError) из -e: 1: в `нагрузки'
Я сделал исследование в течение часа или около того и это означает, что значение, которое я передаю в мой массив, равно нулю, но я присвоил ему значение. Мой код ниже. Я выделил его для переменной row
, которая вызывает ошибку, но я присвоил значение row
, и это проходит через штраф. это когда я использую row+=1
, что он бросает ошибку, я думаю. (Хотя я мог быть неверным.) Я также спрашиваю об этом моего учителя, но он не ответил, поэтому я думал, что я отправлю его здесь, а также в надежде найти решение этой ошибки.
maze=[]
def main_menu (options)
options.each_with_index do |option, index|
printf("%-s. %-s\n", "#{index+1}", "#{option}")
end
print "Please make a selection:"
main_selection=gets.to_i
return main_selection
end
menu_selection=["Maze 1", "Maze 2", "Maze 3", "Maze 4", "Maze 5", "Maze 6", "Maze 7", "Maze 8", "Maze 9", "Maze 10", "Quit"]
user_selection=0
path=1
row=0
column=0
while user_selection != menu_selection.length
user_selection=main_menu(menu_selection)
puts user_selection
case user_selection
when 1
maze.clear
mz_file=File.open("maze1.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
mz_file.close
maze.each do |row|
puts row.join
end
maze.each_index do |row|
column = maze[row].index "F"
if column
maze[row+1][column]=0
maze[row-1][column]=0
maze[row][column+1]=0
maze[row][column-1]=0
end
end
maze.each do |row|
puts row.join
end
#WHILE LOOP FOR MAZE
while row <=maze[0].length
column=0
while column <= maze.length
if maze[row][column]== 0
maze[row+1][column]==path
maze[row-1][column]==path
maze[row][column+1]==path
maze[row][column-1]==path
end
column=column+1
end
row=row+1
end
maze.each do |row|
puts row.join
end
when 2
maze.clear
mz_file=File.open("maze2.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 3
maze.clear
mz_file=File.open("maze3.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 4
maze.clear
mz_file=File.open("maze4.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 5
maze.clear
mz_file=File.open("maze5.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 6
maze.clear
mz_file=File.open("maze6.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 7
maze.clear
mz_file=File.open("maze7.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 8
maze.clear
mz_file=File.open("maze8.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 9
maze.clear
mz_file=File.open("maze9.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
when 10
maze.clear
mz_file=File.open("maze10.mz")
while !mz_file.eof?
line=mz_file.gets.chomp.split("")
maze.push line
end
maze.each do |row|
puts row.join
end
mz_file.close
end
end