这个问题在这里已有答案:
问题:编写一个方法,检查数组是否有奇数后跟偶数。找到第一个奇数。然后,在找到奇数后,开始查看该位置的偶数,然后返回它们之间的距离。如果没有奇数或没有奇数后跟偶数,则返回-1。
数据:包含0个或更多值的数组。该数组不会指向null。
输出:返回距离或-1。
样本数据:
7, 5, 10, 12
3, 5, 7, 1
2, 4, 3, 8, 10, 12
11
5, 3, 11, 6, 7, 11, 8
样本输出
2
-1
1
-1
3
以下是apluscompsci.com对问题的介绍。这个问题是我在AP计算机科学课上分配给学生的问题。所以,我对这个问题的代码如下:
int go( int[] array )
{
int o = 1;
int e = 0;
int distance = e-o;
if(array.length==0)
{
return distance;
}
for(int a = 0, y = 0; a < array.length || y<1; a++)
{
if(array[a]%2==1)
{
y++;
o = a;
for(int b = a + 1, x = 0; b < array.length || x<1; b++)
{
if(array[b]%2==0)
{
x++;
e = b;
}
}
}
}
if(e==0)
{
o=1;
}
return distance;
}
出于某种原因,我为解决问题而构建的代码不断触发“java.lang.ArrayIndexOutOfBoundsException”错误。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13
at Submission.go(typed.java:30)
at Submission.main(typed.java:9)
但是,这是不可能的,因为我以最抽象的方式编写了这个解决方案,而我的for循环从不请求不存在的索引。甚至老师或房间里最聪明的孩子都没有帮我找到,我已经调整了这段代码将近3天。我已经尝试通过重构Eclipse中的代码进行故障排除,如果这个网站的JavaScript可能不支持我使用的一些额外技术,例如我的for循环中的多变量启动和or运算符,但它会回吐相同的错误。
另外,这是我在这个网站上的第一个问题!我其实只是想问一下这个问题,哈哈!希望我把一切都简单明了 - 提前感谢任何帮助!