语法错误,意外的keyword_end结束

时间:2016-02-03 15:50:36

标签: ruby syntax syntax-error

我正在进入Ruby并且我已经搜索并搜索并查看了语法,但我无法弄清楚出了什么问题。

该程序应该解决a ProjectEuler problem

我遇到了四种语法错误:

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

我标记了四个我得到语法错误的地方。

我调整了括号,玩了并仔细检查了end的位置和金额。我不明白它有什么问题。这可能是翻译问题吗?我正在使用MacBook Pro。

2 个答案:

答案 0 :(得分:5)

++运算符在Ruby中不存在。你应该去+= 1

答案 1 :(得分:1)

你的格式非常奇怪。如果您已经通过遵循许多Ruby样式指针中的一个来正确地格式化了代码(或者只是按 Alt + Shift + F 或者无论组合是什么在您选择的编辑器中),您会立即看到问题所在。根据大多数样式指南,二进制中缀运算符的两边应该有一个空格,并且在一元前缀运算符之后没有空格。即你应该写foo - bar!baz。您的中缀运算符周围无空格,一元前缀运算符与其操作数之间有换行符

这是正确格式化的:

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

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