2017-10-05 23 views
1

私はLuhnアルゴリズムを使ってjavaでチェックデジットを作成しようとしていましたが、ここでは全面的な不満から来ました。私は非常に最初のステップで、すべての桁を合計しています(2桁目の2桁が2倍になり、9を2倍した場合は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

関連する問題