0

这是针对我的 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;
}

我究竟做错了什么。这是即将出现的错误

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:4

在 TC1.work(TC1.java:24)

在 TC1.main(TC1.java:12)

4

3 回答 3

0

这是问题的症结所在:

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)
  • 当 i = 0(for 循环中的最小值)时,d[3] 有效
  • 当 i = 3(for 循环中的最大值)时,d[0] 有效

请记住,它d[d.length - i]出现在代码中的几个不同位置;确保纠正每一次出现。

于 2014-10-22T14:48:06.953 回答
0

d[d.length - i]

在所有情况下,当i= 0 时,您都会收到此错误,因为数组从 0 开始并上升到 array.length - 1

您可以通过这样做来纠正此问题d[d.length - i - 1]

于 2014-10-22T14:48:13.770 回答
0
 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;
}

好的,所以我用稍微不同的输入重试了代码,效果很好

于 2014-10-22T15:04:31.950 回答