Java C将每个偶数位置的值加倍,并对问题进行总结

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 二, 在偶数情况下,您忘记从测试中提取数字

我想问一下我犯了什么错误,因为我想把奇数位置的值求和成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;
}