在本练习中,我想要抓住任何整数并计算每个数字的一些。 我发现最好的方法是使用下面的方法。转换为字符串并逐个读取每个字符,并在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");
}
}
}
显然,这不应该是它应该做的方式。即使我这样做也不会得到分数。
有一种更简单的方法只使用整数而不转换或转换为其他类型 有谁知道如何完成这项任务?
答案 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我看到了。没有表达式,循环将无法工作。很奇怪!