Coding_Gamesメモ_Credit_Card_Verifier_(Luhn’s_algorithm)
Coding_GamesメモCredit_Card_Verifier(Luhn’s_algorithm)
javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:
System.err.println( );
を使うとデバックしやすくなる。(エラー出力は評価に影響しない)
内容
カード番号のチェック
ルール
Luhnアルゴリズムを使いカード番号に入力間違いがないかチェックを行う
Luhnアルゴリズムの手順
- 右から数えて偶数番目の桁の数字を2倍する (2桁になる数字の最大値は
9*2=18
なので-9
することで先に計算しておける1+8=9 ,18-9=9
) - 1 で出てきた数字を1桁ずつ全て足す
- 右から数えて奇数番目の桁の数字を1桁ずつ全て足す
- 2 と3 で出てきた数を足す
- 4 の数が10で割り切れる場合、カードの番号は正しい
インプット
1行目 チェックするカードの数 (N)
2行目から 4桁区切りのカード番号の文字列
アウトプット
カード番号が正しいかをYES
かNO
で出力
使用したクラス
Integer
(static int) = Integer.parseInt(str)
数字を表す文字列str をint に変換する
valueOf との違いはparseInt は基本のデータ型のint を出力し、valueOf はラッパークラスのInteger を出力する
String
(char[]) = String.toCharArray();
char配列を出力
(String) = String.substring(x,y)
文字列の一部をコピーする。
x,yはint型
xがコピー開始位置、yは終了位置、yが指定されていなければ最後まで指定したのと同じ。
文字列の最後から1文字づつ考え方
' '
だった時の処理、奇数桁フラグが有効、無効の時の処理を行う
最後に10で割ったあまりが0 かどうかを出力
Coding_Games:https://www.codingame.com/ String (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html Integer (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html