首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在为eimacs使用Java中的Luhn算法

我正在为eimacs使用Java中的Luhn算法
EN

Stack Overflow用户
提问于 2014-10-22 22:43:22
回答 3查看 221关注 0票数 0

这是我的AP计算机编程课上的,我迷失在我的代码的错误之处。我的另一个编程老师基本上看不出我的代码有什么问题,我已经尝试了各种不同的代码集,但都没有。然而,这段代码似乎最有可能工作。

代码语言:javascript
复制
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)

EN

回答 3

Stack Overflow用户

发布于 2014-10-22 22:48:07

这是问题的症结所在:

代码语言:javascript
复制
if ((d[d.length - i] %10) == 0 )

i为0时,d.length - 0为4。d[4]确实是越界的。

要解决此问题,还可以从d.length中减去1,如下所示:

代码语言:javascript
复制
if ((d[d.length - i - 1] % 10) == 0)

  • 当i=0(for循环中的最低值)时,d3是
  • 当i=3(for循环中的最高值)时,d是有效的

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

票数 0
EN

Stack Overflow用户

发布于 2014-10-22 22:48:14

d[d.length - i]

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

您可以通过执行d[d.length - i - 1]来纠正此问题

票数 0
EN

Stack Overflow用户

发布于 2014-10-22 23:04:32

代码语言:javascript
复制
 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;
}

好的,我用稍微不同的输入重试了代码,它工作得很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26510232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档