Ruby:“意外的keyword_end”……但是所有的开启者和闭门器都匹配

我正在处理一个代码块,它将向用户返回第n个素数。 我在第19行和第22行遇到“意外的keyword_end”语法错误。我在代码中添加了注释,以便您可以轻松找到错误的位置。

def nthPrime(n) number = 3 primeNumber = 1 i = 0 primes = [2] #Iterates the number until we've found the desired number of primes. while primeNumber < n #Iterates through the prime numbers already found to locate prime factors. while i < primes.length #Returns TRUE if a prime factor is found. #If no prime factors are found, primeNumber ticks up by one, and the number #is added to the list of primes. if number % primes[i] != 0 if i == primes.length primes << number i = 0 else i ++ end #Unexpected keyword_end end number ++ end #Unexpected keyword_end end puts number end nthPrime(6) 

我已经查看了很多关于“意外的keyword_end”错误的其他Stack Overflow问题,但所有这些问题都是因为作者在代码中有太多“结束”而引起的。 我相信,经过多次检查,我的代码中有正确数量的“结束”关闭器

还有什么问题呢?

i ++写为i += 1 ,将number ++ number += 1number += 1 。 Ruby不支持++--运算符。 阅读此问题Ruby中没有增量运算符(++)? 并且还阅读为什么Ruby不支持i ++或i-(递增/递减运算符)?