当前位置: 首页 > 知识库问答 >
问题:

如何提取整数的奇数并求和

陈夜洛
2023-03-14

我在编写一个程序时遇到了问题,该程序需要输入32677之类的数字,取出奇数并将它们相加。因为位置0中的数字是3。因为3不能被2整除,所以存储3并将其添加到和中。检查位置1中的数字,即2。2可以被2整除,所以不要存储它,丢弃它并检查下一个数字。

检查位置2的数字,即6,6可被2整除,因此将其丢弃并检查下一个数字。检查位置3的数字,即7。检查7是否能被2整除,存储7并将其与奇数相加,即3。总数是10。

检查位置 4 中的下一个和最后一个数字,即 7。检查 7 是否可被 2 整除。它不是这样存储它并将其与其他奇数数字相加,即3 7 7 = 17。

当我运行程序时,我只得到7。我应该得到17作为答案。

 public static void main(String[] args) {
         // TODO Auto-generated method stub
             //Scanner in = new Scanner(System.in);
             System.out.println("Input an a number: ");
             //int userInput = in.nextInt();
             int oddSum = 0;
             int storedNum = 32677;
             int inputLength = 5;
             for (int inputPosition = 0; inputPosition < inputLength; inputPosition ++) {
                 for (int i = 0; i < inputLength; i++ ) {
                 storedNum = storedNum % 10;
        
             if (storedNum % 2 == 1) {
                 int oddNum = storedNum;
                 oddSum = oddNum + oddSum; 
                 storedNum = storedNum / 10;
        }
                 else {
                 storedNum = storedNum / 10;
                 }
             }
             }
             System.out.printf("%d", oddSum);
             //scanner.close();
     }
        
     }

共有1个答案

匡旭东
2023-03-14

你可以通过这种方式做到这一点:

int num = 32677;
int sum = 0;
while(num > 0) {
    int lastDigit = num % 10;
    if (lastDigit % 2 != 0)
        sum += lastDigit;
    num = num / 10;
}
System.out.print(sum);
 类似资料:
  • 问题内容: 我有一个String变量(基本上是一个英语句子,带有未指定数量的数字),我想将所有数字提取到一个整数数组中。我想知道是否有使用正则表达式的快速解决方案? 我使用了Sean的解决方案,并对其进行了一些更改: 问题答案: …打印和。 -?匹配前导负号-可选。 d匹配一个数字,但是我们需要像Java String中那样编写。因此, d +匹配1个或多个数字。

  • 我想求两个整数之间的偶数奇偶数的个数。以下是我目前所写的内容: 这个很管用。但是,和这两个整数之间的差值可能高达,这意味着类似这样的解决方案是行不通的。是否有一个更有效的,即解决方案来解决这个问题?

  • 我被要求编写一个程序,用Switch-Case语句的自由落体方法,获取1-10之间的5个数字,并找出其中有多少是偶数,有多少是奇数。我已经编写了代码,并且在本地范围内声明了变量,其中存在相同的开关情况,所以我认为这不是块范围的问题。如果数字是奇数(1,3,5,7,9),则奇数计数器变量(oc)递增。偶数也会发生同样的情况。如果数字不在范围内,则打印“无效输入”(它继续,不会中断程序)。 问题是,它

  • 给定一个整数,如何有效地找到范围内可被7整除的数的计数(它们的反向也应可被7整除): null 对于,请回答: [从0到99的所有可被7整除的数(它们的反向也可整除)] null null

  • 假设第一个输入行是这样的: 第二输入线为: 输出应为: 我试着把所有的数字放在一个单独的数组里。但我不知道如何找到所说的数组的乘积。输出大小应该是第一个数的大小+第二个数的大小。因此,如果产品大小较小,它应该有一个前导0。

  • 预期的输出是值的排序数组:。