━━━━ ◇ ━━━━
Java/Java 공부

Java 숫자를 입력하고 각 자리의 합을 구해보자

사용자로부터 숫자를 입력받고, 이 숫자의 각 자리의 합을 구하는 예제를 풀어보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package example;
 
import java.util.Scanner;
 
/* 사용자로 부터 숫자를 입력받고, 이 숫자의 각 자리의 합을 구하는 예제*/
public class FlowEx25 {
 
    public static void main(String[] args) {
        int num = 0// 입력된 숫자가 저장될 변수를 초기화 한다.
        int sum = 0// 입력된 숫자의 각 자리의 합을 저장할 변수를 초기화 한다.
        
        System.out.print("숫자를 입력하세요 : ");
        Scanner sc = new Scanner(System.in);
        num = sc.nextInt();
        
        while(num!=0){
            //num을 10으로 나눈 나머지를 sum에 더한다.
            sum += num%10;
            //num을 10으로 나눈 값을 다시 num에 저장한다.
            num /= 10;
        }
        System.out.println("각 자리수의 합은 "+sum+"입니다.");
        System.out.println("프로그램을 종료합니다.");
        sc.close();
        
 
    }
 
}
 
cs


이 예제는 반복문 while 을 사용한 예제 입니다. 입력된 숫자를 10으로 나누고 그 나머지를 sum에 누계해 가는 방법 입니다. sum에 값을 누계한 다음, 나누기를 하면 나머지가 버려지기 때문에 다음 자리수를 추출할 수 있게 됩니다. 아래 실행 결과를 예로 좀 더 자세하게 설명해 보겠습니다.



처음에 입력된 숫자는 123456789 입니다. 이 수를 10으로 나눈 나머지는 9 입니다. sum 에 9가 더해 집니다. sum은 현재 0 +9 가 되어서 9가 저장되어 있습니다. 다시 123456789를 10으로 나눈 몫은 12345678 이 됩니다. 프로그래밍에서 나누기를 하면 나머지를 버린 몫만 구해지기 때문입니다. 12345678 이 num 변수에 덮어씌여 집니다.


while 반복문에 의해서 num 이 0이 아니기 때문에 위의 과정이 되풀이 됩니다.


12345678을 10으로 나눈 나머지는 8 입니다. sum 에 8이 더해 집니다. 이제 sum은 9 +8 = 17 이 됩니다. 다시 12345678을 10으로 나눈 몫은 1234567이 됩니다. 1234567을 num 변수에 덮어 씌웁니다.


여전히 num 은 0이 아니기 때문에 반복문이 반복됩니다. 더 이상의 설명은 생략하겠습니다.



COMMENT