2017-10-05 76 views
1

我一直在尝试使用Luhn算法在java中制作一个检查数字,并且我来到这里是为了完全沮丧。我处于第一步,它将所有数字相加在一起(每增加一位数字就加倍,如果加倍后变为大于9,则减去9),但我无法在任何接近总和应为的位置得到答案。如果我输入“11”作为字符串,则输出总和应为3时输出为138.我不知道我的代码中出现了什么问题,我想知道是否有更多经验的人可以帮助我。制作Luhn的检查数字 - Java

import javax.swing.JOptionPane; 
    public class Assignment 
    { public static void main (String []args) 
{ 
    String UserNum; 
    char c; 
    int secondnum, ctwo; 
    secondnum = 0; 
    ctwo = 0; 
    UserNum = JOptionPane.showInputDialog("Please enter a number: "); 
    int len, i; 
    len = UserNum.length(); 
    i = 0; 
    System.out.println(UserNum); 
    while (i < len) { 
     c = UserNum.charAt(i); 
     System.out.println(c); 
     i++; 
     if (i%2==0){ 
      ctwo = c*2; 
      if (ctwo > 9) { 
       ctwo = ctwo - 9; 
       secondnum = secondnum + ctwo; 
      } 
      else { secondnum = secondnum + ctwo; 
      } 
} 
else { 
    secondnum = secondnum + c; 
    } 
    System.out.println(secondnum); 
     } 
    } 
    } 

此外:即使将代码简化为只添加每个单独数字的值在一起,所述值的总和仍然很远。

回答

0

您正在使用每个数字的ASCII值而不是数字本身。由于ASCII码是连续的,因此提取数值非常容易 - 只需减去'0'

c = UserNum.charAt(i) - '0'; // Note that c must be defined as an int 
+1

谢谢,我认为可能是这种情况。但我不知道如何克服这个障碍。这工作,我接受它作为解决方案 – Tealdragon204