3

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

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");
        }
    }
}

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

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

4

2 回答 2

4

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

int sum = 0;

while (n > 0) {
    sum += n % 10;
    n /= 10;
}
于 2013-05-15T00:32:55.210 回答
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 我看到了。如果没有表达式,循环将无法工作。诡异的 !

于 2013-05-15T01:05:46.307 回答