仅显示Java中的最终数字总和

时间:2017-08-26 17:05:21

标签: java

我目前正在尝试查找数字中的数字总和。但是,当我显示总和时,我遇到了问题,因为它仍然显示所有先前的总和,而不仅仅是我想要的最终数字总和。

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,但是,我只希望显示最终的数字总和。

我该如何处理这个问题? 任何提示和建议将不胜感激。

3 个答案:

答案 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 方法来计算这些整数的总和。