我目前正在尝试查找数字中的数字总和。但是,当我显示总和时,我遇到了问题,因为它仍然显示所有先前的总和,而不仅仅是我想要的最终数字总和。
int rem = 0, sum = 0, input = 0;
Scanner k = new Scanner(System.in);
System.out.println("Enter a number");
input = k.nextInt();
while (input > 0){
rem = input % 10;
sum = sum + rem;
input = input / 10;
System.out.println(sum);
}
这是我上面程序的一部分。因此,例如,当我输入数字25时,程序首先输出数字5然后输出数字7.我理解为什么它输入数字5,因为它是除以10时的余数,因为我在开始时初始化sum = 0,由于sum = 0 + 5,第一个总和将为5,但是,我只希望显示最终的数字总和。
我该如何处理这个问题? 任何提示和建议将不胜感激。
答案 0 :(得分:1)
while loop
是计算总和的东西,因此您需要在 计算后打印结果 :
while (input > 0){
rem = input % 10;
sum = sum + rem; //same as : sum += rem
input = input / 10; //same as : input /= 10;
}
System.out.println(sum);
除此之外,还有一些技巧,并删除 rem
变量,这相当于:
while (input > 0) {
sum += input % 10; //sum +=rem; --> sum += (input%10);
input /= 10;
}
System.out.println(sum);
答案 1 :(得分:0)
只需在while循环后打印求和的结果。您会发现数字的每个求和结果都是因为您在while循环中打印结果。 你应该这样做:
while (input > 0){
rem = input % 10;
sum = sum + rem;
input = input / 10;
}
System.out.println(sum);
如果您的输入为25,那么它将显示总和为7。
答案 2 :(得分:0)
正如其他人所说,问题是你在while循环中打印sum变量的值。 您可以将代码更改为:
while (input > 0) {
sum += input % 10;
input /= 10;
}
System.out.println(sum);
或者您可以使用流:
public static void main(String[] args) {
//1. Step: Read the number
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number");
Integer input = scanner.nextInt();
scanner.close();
//2. Step: calculate the sum with streams
int sum = String.valueOf(input).chars().map(Character::getNumericValue).sum();
//3. Step: Print out the result
System.out.println(sum);
}
基本上第二步发生的是: 我们将整数转换为字符串,我们得到字符串的字符,我们使用 map 调用每个字符调用 getNumericValue 方法将字符转换回整数,然后我们调用 sum 方法来计算这些整数的总和。