我正在尝试开发一个小型java程序,可以检查随机SIN(社会保险号)是否有效。为了使SIN(9位)有效,它们必须总和为10的倍数。这是一个有效的SIN号码,我想出了464-147-464来测试我的程序。 我现在需要做的是能够隔离每个数字(使用模数和/或除法)。这是我到目前为止所提出的。
public static void main(String[] args) {
// TODO code application logic here
int x1 = 1;
int x2 = 2;
int x3 = 3;
int x4 = 4;
int x5 = 5;
int x6 = 6;
int x7 = 7;
int x8 = 8;
int x9 = 9;
int x0 = 0;
int x1 = 1/100000000;
int num1 = 1%100000000;
int x2 = 2/10000000;
int num2 = 2%10000000;
int x3 = 3/1000000;
int num3 = 3%1000000;
int x4 = 4/100000;
int num4 = 4%100000;
int x5 = 5/10000;
int num5 = 5%10000;
int x6 = 6/1000;
int num6 = 6%1000;
int x7 = 7/100;
int num7 = 7%100;
int x8 = 8/10;
int num8 = 8%10;
int x9 = 9/1;
int num9 = 9%1;
String number = JOptionPane.showInputDialog("Please enter a valid SIN.");
我是否在正确的轨道上?整点是用户应该能够输入任何9个数字,如果它们加起来为10的倍数(通过模数或除法),它就是好的。
任何人都知道我能做什么?
答案 0 :(得分:0)
public static boolean validate(int sin) {
int total = 0;
for(int i =0;i<9;i++){
total += sin %10;
sin = sin/10;
}
return total%10==0 && sin ==0;
}
答案 1 :(得分:0)
这应该这样做:
public static boolean isValidate(String arg0) {
int num = Integer.parseInt(arg0.replaceAll("-",""));
if((num+"").length() != 9 ) return false;
int sum = 0;
while (0 != num) {
sum += (num% 10);
num /= 10;
}
return (sum%10==0);
}
用法:
System.out.println(isValidate("464-144-464")); //returns false
System.out.println(isValidate("460-127-064")); // return true