The problem
Write a program that reads an integer between 0 and 1000 and adds all the digits in the integer. For example, if an integer is 932, the sum of all its digits is 14. Hint: Use the % operator to extract digits, and use the / operator to remove the extracted digit. For instance, 932 % 10 = 2 and 932 / 10 = 93.
Here is a sample run:
Enter a number between 0 and 1000: 999
The sum of the digits is 27
Breaking it down
This example will use java 8 though there are several ways to approach this problem. Storing in a string read from the user input we will initialize a stream by splitting the string on each character. Since the Stream
is of type String
we need to map values by using mapToInt
. Finally calling the Stream.sum()
will calculate the sum of the digits.
public static void main(String[] Strings) {
Scanner input = new Scanner(System.in);
System.out.print("Enter an integer between 0 and 1000: ");
String number = input.next();
input.close();
int sum = Stream.of(number.split(""))
.mapToInt(Integer::valueOf)
.sum();
System.out.println("The sum of all digits in " + number + " is " + sum);
}
Output
Enter an integer between 0 and 1000: 1000
The sum of all digits in 1000 is 1