Java C将每个偶数位置的值加倍,并对问题进行总结
我想问一下我犯了什么错误,因为我想把奇数位置的值求和成Sumlast变量,把偶数位置的值求和成Sumlastwo变量 但是,我需要将偶数位置的每个值加倍,然后将它们分成两位数,如9X2=18--->1+8 因为奇数值没有问题,但当它达到偶数位置时,会出现一些问题 我输入的示例:81 输出: 7. 一, 但当我输入更多的数字时,比如:9181 它成为输出: 27 2. 假设它是(9X2),(8X2)-->18,16=1+8+1+6=16 输出: 16 二, 在偶数情况下,您忘记从Java C将每个偶数位置的值加倍,并对问题进行总结,java,Java,我想问一下我犯了什么错误,因为我想把奇数位置的值求和成Sumlast变量,把偶数位置的值求和成Sumlastwo变量 但是,我需要将偶数位置的每个值加倍,然后将它们分成两位数,如9X2=18--->1+8 因为奇数值没有问题,但当它达到偶数位置时,会出现一些问题 我输入的示例:81 输出: 7. 一, 但当我输入更多的数字时,比如:9181 它成为输出: 27 2. 假设它是(9X2),(8X2)-->18,16=1+8+1+6=16 输出: 16 二, 在偶数情况下,您忘记从测试中提取数字
测试中提取数字
int test = Integer.parseInt(num);
while (test != 0)
{
int digit = test % 10;
if (c % 2 == 0) //even
{
int numeven = digit * 2;
while (numeven > 0)
{
Sumlasttwo += numeven % 10;
numeven /= 10;
}
}
else //odd
{
Sumlast += digit;
}
test /= 10;
c++;
}
另外,声明numeven
尽可能接近其用法更具可读性。
java中的Sumlast
通常是编写Sumlast
。另外,{
和..{
是这样一种约定,但举例来说,它不是C语言,也不像驼峰格名称那样神圣
调试会有所帮助 使用帮助方法会使代码变得更好:
boolean even = true;
while (test != 0) {
int digit = test % 10;
if (even) {
sumEven += digitsSum(digit * 2);
} else {
sumOdd += digit;
}
test /= 10;
even = !even;
}
private static void digitSum(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
请先忽略!=8,因为我想先做内部函数…谢谢,我参考你的修改了一些,它解决了我的问题:D
boolean even = true;
while (test != 0) {
int digit = test % 10;
if (even) {
sumEven += digitsSum(digit * 2);
} else {
sumOdd += digit;
}
test /= 10;
even = !even;
}
private static void digitSum(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}