Ruby 语法错误,意外的关键字\u end

Ruby 语法错误,意外的关键字\u end,ruby,syntax,syntax-error,Ruby,Syntax,Syntax Error,我正在学习Ruby,我搜索了又搜索,看了又看语法,但我不知道出了什么问题 这个程序应该解决这个问题 我遇到了以下四个语法错误: unexpected keyword_end end 这是我的代码: grid = #20x20 "grid"/array of numbers largest = 0 lateral(0,1,2,3) vertical(0,20,40,60) diagonal_right(0,21,42,63) diagonal_left(3,22,41,60) puts l

我正在学习Ruby,我搜索了又搜索,看了又看语法,但我不知道出了什么问题

这个程序应该解决这个问题

我遇到了以下四个语法错误:

unexpected keyword_end end
这是我的代码:

grid = #20x20 "grid"/array of numbers

largest = 0

lateral(0,1,2,3)
vertical(0,20,40,60)
diagonal_right(0,21,42,63)
diagonal_left(3,22,41,60)

puts largest 

#lateral
def lateral(a, b, c, d) 
    while (d < grid.size)
        temp = grid[a] * grid[b] * grid[c] * grid[d] 

        if (temp > largest)
            largest = temp
        end

        if ((d % 19) == 0)
            a += 4
            b += 4 
            c += 4
            d += 4
        else 
            a++
            b++
            c++
            d++
        end  # <===== getting syntax error here
    end
end

def vertical(a, b, c, d)

    while (d < grid.size)
        temp = grid[a] * grid[b] * grid[c] * grid[d] 

        if (temp > largest)
            largest = temp
        end

        a++
        b++
        c++
        d++
    end    # <===== getting syntax error here
end

def diagonal_right(a, b, c, d) 

    while (d < grid.size)
        temp = grid[a] * grid[b] * grid[c] * grid[d] 

        if (temp > largest)
            largest = temp
        end

        if ((d % 19) == 0)
            a += 4
            b += 4 
            c += 4
            d += 4
        else 
            a++
            b++
            c++
            d++
        end    # <===== getting syntax error here
    end
end

def diagonal_left(a, b, c, d) 

    while (d < (grid.size - 4))
        temp = grid[a] * grid[b] * grid[c] * grid[d] 

        if (temp > largest)
            largest = temp
        end

        if ((a % 19) == 0)
            a += 4
            b += 4 
            c += 4
            d += 4
        else 
            a++
            b++
            c++
            d++
        end      # <===== getting syntax error here
    end
end
grid=#20x20“grid”/数字数组
最大值=0
横向(0,1,2,3)
垂直(0,20,40,60)
右对角线(0,21,42,63)
左对角线(3,22,41,60)
最大的
#侧面的
def横向(a、b、c、d)
而(d<网格大小)
温度=网格[a]*网格[b]*网格[c]*网格[d]
如果(温度>最大值)
最大值=温度
结束
如果((d%19)==0)
a+=4
b+=4
c+=4
d+=4
其他的
a++
b++
C++
d++
完#最大)
最大值=温度
结束
a++
b++
C++
d++
完#最大)
最大值=温度
结束
如果((d%19)==0)
a+=4
b+=4
c+=4
d+=4
其他的
a++
b++
C++
d++
完#最大)
最大值=温度
结束
如果((a%19)=0)
a+=4
b+=4
c+=4
d+=4
其他的
a++
b++
C++
d++

end#Ruby中不存在
++
操作符。您应该选择
+=1

Ruby中不存在
++
操作符。你应该选择
+=1

你的格式很奇怪。如果您通过遵循众多Ruby样式指南中的一个来正确格式化代码(或者简单地点击Alt+Shift+F或选择的编辑器中的任何组合),您就会立即看到问题。根据大多数样式指南,二元中缀运算符的两侧应该有一个空格,一元前缀运算符后面应该没有空格。也就是说,你应该写
foo-bar
!baz
。中缀运算符周围没有空格,一元前缀运算符与其操作数之间有一条换行符

这是正确格式化的外观:

a + +b + +c + +d + + # plus what?

你看到问题了吗?最后一个一元前缀
+
运算符缺少操作数。

格式非常奇怪。如果您通过遵循众多Ruby样式指南中的一个来正确格式化代码(或者简单地点击Alt+Shift+F或选择的编辑器中的任何组合),您就会立即看到问题。根据大多数样式指南,二元中缀运算符的两侧应该有一个空格,一元前缀运算符后面应该没有空格。也就是说,你应该写
foo-bar
!baz
。中缀运算符周围没有空格,一元前缀运算符与其操作数之间有一条换行符

这是正确格式化的外观:

a + +b + +c + +d + + # plus what?

你看到问题了吗?您缺少最后一个一元前缀
+
运算符的操作数。

Ohhhh geez。陷入爪哇哈哈,这就成功了。非常感谢你!哎呀。陷入爪哇哈哈,这就成功了。非常感谢你!这是真正的答案。这是真正的答案。这是一个副本。这是一个副本