【发布时间】:2020-07-29 10:55:14
【问题描述】:
我添加了一个条件来检查数组是否为空,并自动将一个整数设置为大于数组的大小,因为它是空的,但我得到一个“索引超出了数组的范围”。改为消息
public static bool hurdleJump(int[] hurdles, int jumpHeight)
{
int max = hurdles[0];
if (hurdles == null && hurdles.Length == 0)
{
return false;
}
else if (hurdles != null || hurdles.Length >= 1)
{
for (int i = 0; i < hurdles.Length - 1; i++)
{
max = max < hurdles[i+1] ? hurdles[i+1] : max;
}
if (jumpHeight >= max)
{
return true;
}
}
return false;
}
static void Main(string[] args)
{
Console.WriteLine(hurdleJump(new int[] {}, 7));
}
【问题讨论】:
-
if (hurdles == null && hurdles.Length == 0)应该是if (hurdles == null || hurdles.Length == 0)目前,如果hurdles为空,您将获得NullReferenceException。那么你就不需要在else if条件下检查null。 -
另外,您需要将
int max = hurdles[0]移动到else if正文中。想想为什么这是必要的。 -
你也可以使用 Any() 方法,docs.microsoft.com/en-us/dotnet/api/…
-
hurdels[0]访问 first 元素,而您提供 empty 元素。只需省略该行。