Java 计算社保号码中的最后一个字母
该代码的目的是解决瑞典身份号码中的最后一个数字,但它似乎不起作用。算法描述如下:Java 计算社保号码中的最后一个字母,java,Java,该代码的目的是解决瑞典身份号码中的最后一个数字,但它似乎不起作用。算法描述如下: 现在很明显,它只应该解k0的和,但这就是我需要帮助的全部。好的,我从你的个人资料中猜到,你说的是瑞典个人身份号码 首先,talX变量存在错误。您忘记了减法48(或者用其他方法解析字符以获得int值) 要回答您的问题,您应删除所有: int sum = 0; while (k0 != 0) { sum += k0 % 10; k0 /= 10; } 对于第一个数字,这将非常有效: System.out.pr
现在很明显,它只应该解k0的和,但这就是我需要帮助的全部。好的,我从你的个人资料中猜到,你说的是瑞典个人身份号码 首先,
talX
变量存在错误。您忘记了减法48
(或者用其他方法解析字符以获得int值)
要回答您的问题,您应删除所有:
int sum = 0;
while (k0 != 0) {
sum += k0 % 10;
k0 /= 10;
}
对于第一个数字,这将非常有效:
System.out.println(“位数总和:+(k0%10+k0/10))
这就是你要问的,但是为了解决整个问题,我建议你重构你的代码。变量,如
k0
,k1
。。。迭代将不容易。尝试创建一个数组(甚至在中计算下一个数字的和)(int i=0;我能用文字(或通过链接)解释最后一个数字应该如何计算吗?一些输入和输出值的例子会有所帮助。你到底想要什么?如果我写下例如“941204546”,那么它应该写出18(9*2)的数字和当我写“941204546”的时候,我得到的是“6”,而不是应该的“9”write@Marc-这还不能回答问题。你需要解释算法,而不是提供(单个)例如。但是现在我需要把所有数字相加。我该怎么做?这很简单。只需使用另一个变量,例如:whistum
,在每次迭代中whistum+=sum
你能给我描述一下“int multiplied=numer*((i+1)%2)+1”);“是如何工作的吗?@Marc(i+1)%2
等于1
对于偶数i
和0
对于奇数i
,通过添加1
,您将得到2
和1
。这与您这样做的方式相同:k0=tal0*2;
,k1=tal1*1;
,k2=tal2*2;
…但是在一个循环中-e> 根据ID号中数字的位置i
自动选择。请注意,第一个数字位于i==0
int sum = 0;
while (k0 != 0) {
sum += k0 % 10;
k0 /= 10;
}
System.out.println("Sum of digits: " + sum);}
}
int sum = 0;
while (k0 != 0) {
sum += k0 % 10;
k0 /= 10;
}
for (int i=0; i<9; i++){
int nummer = indata.charAt(i) - 48;
int multiplied = nummer*((i+1)%2)+1); // it will multiply by 2 or 1 (depending on digit position)
int sum = multiplied%10 + multiplied/10 // sum of digits
System.out.println("The sum for " + i + " digit is: " + sum);