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

在java中计算偶数位数字和奇数位数字之和时出错

杜弘伟
2023-03-14

在我们的方向上,我们必须得到一个 16 位数字,然后将从右到左的奇数处的所有数字相加。之后,我们必须从右到左对所有偶数位数字求和,将总和加倍,然后取模块 9。当我尝试运行我的代码时,我不断收到“无效”,即使它带有有效的信用卡号。

public static boolean validateCreditCard(long number) {
    double cardSum = 0;
    for (int i = 0; i < 16; i++) {
        long cardnumber = (long) Math.pow(10, i);
        double oddPlaceSum = 0;
        double evenPlaceSum = 0;
        if (i % 2 != 0) {
            oddPlaceSum += ((int)(number % cardnumber / (Math.pow(10, i))));
        } else { // so if i%2 ==0
            evenPlaceSum += ((int)(number % cardnumber / (Math.pow(10, i)) * 2 % 9));
        }
        cardSum += evenPlaceSum + oddPlaceSum;
    }
    if (cardSum % 10 == 0) {
        return true;
        System.out.println("Valid");
    } else {
        return false;
        System.out.println("Invalid");
    }
}

共有3个答案

夏侯智鑫
2023-03-14

尝试使用回避查找偶数位的总和和数字的奇数位总和。

class Recursion {
  static int count = 0;
  static int even =0;
  static int odd =0;
  public static int Digits(int num) {
    if (num > 0) {
      count++;
      if(count%2 == 0){
          even += num%10;
      }
      else{
          odd += num%10;
      }
      Digits(num / 10);
    }
    return even;
    // for odd 
    // return odd;
  }
  public static void main(String[] args) {
    int num = 31593;
    int res = Digits(num);
    System.out.println("Total digits are: " + res);
  }
}

帮我如何将偶数和奇数和打印在一起?

郑宏朗
2023-03-14

您可以在单个 while 循环中执行此操作,因为数字是固定的,如下所示:

int digit,evensum,oddsum;
int i=16;
while(i > 0){
    digit=number%10;
    if(i%2 == 0)
         evensum+=digit;
    else
         oddsum+=digit;  
    i--;
    digit/=10;
} 
南门新知
2023-03-14

试试这个:

>

  • 使用 Long.toString(number) 将 16 位数字转换为字符串。

    逐个字符循环访问字符串,并跟踪偶数和奇数索引。

    使用 Integer.valueOf() 将每个字符转换为整数,从而以增量方式添加它们。

    瞧,你得到了你的偶数和奇数。接下来的步骤应该是微不足道的。

    public static boolean validateCreditCard(long number){
    String x = Long.toString(number);
    int evenSum = 0;
    int oddSum = 0;
    for(int i=0; i<x.length; i=i+2) {
       oddSum += Integer.valueOf(s[i]);
       evenSum += Integer.valueOf(s[i+1]);
    }
    //Do the next steps with odd and even sums. 
    

    此外,请根据需要处理 IndexOutOfBoundsException。

  •  类似资料:
    • 本文向大家介绍在C ++中计算整数中的偶数和奇数位,包括了在C ++中计算整数中的偶数和奇数位的使用技巧和注意事项,需要的朋友参考一下 给我们一个整数,任务是计算一个数字中的偶数和奇数。另外,我们将继续检查整数中的偶数是否出现偶数次,并且整数中的奇数位是否出现奇数次。 例如 说明-是的,此外,偶数出现偶数次,即2,奇数位出现奇数次,即3 说明-:否,因为偶数出现的次数是奇数,即3,而奇数出现的次数

    • 本文向大家介绍在C ++中找到偶数和奇数位数的数字总和,包括了在C ++中找到偶数和奇数位数的数字总和的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个整数N,我们必须找到奇数位和偶数位的和。因此,如果数字是153654,则odd_sum = 9,even_sum = 15。 为了解决这个问题,我们可以从最后一位提取所有数字,如果原始数字的位数是奇数,则最后一位必须是奇数位,否则将是偶数位。

    • 本文向大家介绍Java中二叉树的奇数位置和偶数位置节点之和之间的差,包括了Java中二叉树的奇数位置和偶数位置节点之和之间的差的使用技巧和注意事项,需要的朋友参考一下 问题陈述 对于给定的二叉树,编写一个程序以查找奇数位置和偶数位置的节点总和之差。假设根位于0级,奇数位置,根的左/右子级位于2级,左子级位于奇数位置,右子级位于偶数位置,依此类推。 示例 解 使用级别顺序遍历。在遍历期间,将第一个元

    • 如何添加代码以查找此程序数组中的零?此代码可以计算偶数和奇数。我应该做一个不同的语句,还是可以添加另一个如果其他语句?

    • 嗨,这是我正在做的课程上的一个问题。。。 > 程序打印“键入数字”,直到用户键入数字-1。当用户键入数字1时,程序打印“谢谢,稍后再见!”!“并结束 程序应该打印用户输入的数字的总和(不带数字-1) 程序应该打印用户键入的数字(没有数字-1) 程序应该打印用户键入的数字的平均值(没有数字-1)。 5.程序应该打印用户键入的偶数和奇数的数量(没有数字-1)。 我已经完成了1-4,但完全停留在5。我确

    • 我需要写一个程序来计算用户输入的整数的奇偶平均数。用户键入“完成”以完成。输出将显示奇数的平均值和偶数的平均值。 我有一个while循环程序,可以计算数字的和,我正试图增加奇数和偶数和的额外要求。这是代码: 下面是我修改的代码,对奇数和偶数进行排序,然后对每组进行平均。 预期: 实际:

    • 本文向大家介绍奇数和偶数之和之间的差。,包括了奇数和偶数之和之间的差。的使用技巧和注意事项,需要的朋友参考一下 问题陈述 对于给定的长整数n,编写一个程序以查找奇数位和偶数位总和之间的差是否为0。索引从0开始。 示例 示例 以下是Java中的程序,用于查找所需的输出。 输出结果

    • 问题是要找出A和B(包括A和B)之间的数字总数等于S。 同时打印A和B(含)之间的最小数字。 输入: 由A、B、S组成的单线。 输出: 两行。 在第一行中,A和B之间的整数数,其位数之和等于S。 在第二行中,A和B之间的最小数字。 约束: 1. 1. 来源:黑客地球 我的解决方案只适用于30%的输入。对此最好的解决方案是什么? 我现在使用的算法计算最小数字的和,然后在十位数的每次更改后再次计算和。