这是我的AP计算机编程课上的,我迷失在我的代码的错误之处。我的另一个编程老师基本上看不出我的代码有什么问题,我已经尝试了各种不同的代码集,但都没有。然而,这段代码似乎最有可能工作。
int[] d = {8, 7, 6, 2 };
boolean valid;
int sum = 0;
int dd;
for ( int i = 0; i < d.length; i++ )
{
if ((d[d.length - i] %10) == 0 )
{
dd = d[d.length - i] * d[d.length - 1];
sum += dd ;
}
else
{
sum += d[d.length - i] ;
}
}
if ( sum %10 == 0)
{
valid = true;
}
else
{
valid = false;
}我做错了什么。下面是即将出现的错误
线程"main“java.lang.ArrayIndexOutOfBoundsException中出现异常:4
在TC1.work(TC1.java:24)
在TC1.main(TC1.java:12)
发布于 2014-10-22 22:48:07
这是问题的症结所在:
if ((d[d.length - i] %10) == 0 )当i为0时,d.length - 0为4。d[4]确实是越界的。
要解决此问题,还可以从d.length中减去1,如下所示:
if ((d[d.length - i - 1] % 10) == 0)请记住,d[d.length - i]出现在代码中的几个不同位置;请确保更正每个出现的位置。
发布于 2014-10-22 22:48:14
d[d.length - i]
在所有情况下,当i =0时,您都会收到此错误,因为数组从0开始,直到array.length -1
您可以通过执行d[d.length - i - 1]来纠正此问题
发布于 2014-10-22 23:04:32
int[] d = {8,7,6,2 };
boolean valid;
int sum = 0;
int dd;
for ( int i = 0; i < d.length; i++ )
{
if ((d.length - i) %2 == 0 )
{
dd = d[i] * 2;
}
else
{
sum += d[i] ;
}
}
if ( sum %10 == 0)
{
valid = true;
}
else
{
valid = false;
}好的,我用稍微不同的输入重试了代码,它工作得很好
https://stackoverflow.com/questions/26510232
复制相似问题