Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算社保号码中的最后一个字母_Java - Fatal编程技术网

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);