Лун. Контроль длины цифры
Я действительно новичок в этом. Я пытаюсь использовать алгоритм Луна для проверки "номера человека" (шведского номера социального страхования). Я думаю, что код почти закончен, но я не знаю, что добавить в классы "birthDate.length()" и "pos", чтобы он работал. birthDate.length необходимо убедиться, что длина строки составляет 10 цифр, а для контроля валидации требуется "pos".
package kund;
import java.util.Scanner;
public class Kund {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Welcome customer. Please login by using your "
+ "birthdate (yymmddxxxx)");
Scanner input = new Scanner (System.in);
String birthDate = input.next();
int length = birthDate.length();
int sum = 0;
for (int i = 1; pos=length-1; i<=10; i++, pos--){
char tmp = birthDate.charAt(pos);
int num = Integer.parseInt(String.valueOf(tmp));
int produkt;
if (i % 2 != 0){
produkt = num * 1;
}else {
produkt = num * 2;
}
if ( produkt > 9 )
produkt -= 9;
sum += produkt;
boolean korrekt = (sum % 10) == 0;
if (!korrekt){
System.out.println("Invalid.");
}else if(korrekt){
System.out.println("Correct");
}
}
}
}
1 ответ
Ваш код синтаксически неверен. Ваш цикл for имел 4 компонента в заголовке цикла вместо 3 . Я переместил позицию = длина-1; вещь в синтаксически правильной позиции. Я не знаю, как алгоритм должен работать так, я не могу проверить, является ли программа теперь семантически правильной.
Тем не менее, я предполагаю, что у вас есть номер социального страхования в Швеции, и вы можете легко проверить.
package kund;
import java.util.Scanner;
public class Kund {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Welcome customer. Please login by using your "
+ "birthdate (yymmddxxxx)");
Scanner input = new Scanner (System.in);
String birthDate = input.next();
int length = birthDate.length();
int sum = 0;
int pos = length-1;
for (int i = 1; i<=10; i++, pos--){
char tmp = birthDate.charAt(pos);
int num = Integer.parseInt(String.valueOf(tmp));
int produkt;
if (i % 2 != 0){
produkt = num * 1;
}else {
produkt = num * 2;
}
if ( produkt > 9 )
produkt -= 9;
sum += produkt;
boolean korrekt = (sum % 10) == 0;
if (!korrekt){
System.out.println("Invalid.");
}else if(korrekt){
System.out.println("Correct");
}
}
}
}