计算整数值的每个数字的总和

时间:2013-05-15 00:30:30

标签: java casting integer add

在本练习中,我想要抓住任何整数并计算每个数字的一​​些。 我发现最好的方法是使用下面的方法。转换为字符串并逐个读取每个字符,并在for循环中总计每个字符的总和。

import java.util.InputMismatchException;
import java.util.Scanner;


public class SommeChiffreNombre {

    /**
     * @param args
     * 
     * Demandez à l’usager d’entrer un nombre entier
     * Ensuite, calculez la somme de tous les chiffres de ce
     * nombre et affichez le résultat.
     * 
     * L’affichage obtenu doit être semblable aux suivants :
     * 
     * Entrez un nombre entier :
     * 5361
     * La somme des chiffres est : 15
     * 
     * 
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
            System.out.print("Entrez un nombre entier : ");
            Scanner in = new Scanner(System.in);
            int nb = in.nextInt();
            in.close();
            int somme = 0;

            for(int i=0;i<Integer.toString(nb).length();i++){
                char charVal = Integer.toString(nb).charAt(i);
                somme += Character.getNumericValue(charVal); 
            }
            System.out.println("La somme des chiffres est : "+somme);
        } catch (InputMismatchException e) {
            // TODO Auto-generated catch block
            System.out.println("You didn't enter an Integer Value");
        }
    }
}

显然,这不应该是它应该做的方式。即使我这样做也不会得到分数。

有一种更简单的方法只使用整数而不转换或转换为其他类型 有谁知道如何完成这项任务?

2 个答案:

答案 0 :(得分:4)

您可以使用模运算符并使用整数除法:

int sum = 0;

while (n > 0) {
    sum += n % 10;
    n /= 10;
}

答案 1 :(得分:0)

在@Blender的帮助下,这是正确的方法。

import java.util.Scanner;


public class Question8Simple {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.print("Entrez un nombre entier : ");
        Scanner in = new Scanner(System.in);
        int nb = in.nextInt();
        in.close();
        int sum = 0;

        while (nb>=1) {
            sum += nb % 10;
            nb /= 10;
        }
        System.out.println(sum);
    }

}

@BLuFeNiX我看到了。没有表达式,循环将无法工作。很奇怪!