사용자로부터 숫자를 입력받고, 이 숫자의 각 자리의 합을 구하는 예제를 풀어보자.
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이 아니기 때문에 반복문이 반복됩니다. 더 이상의 설명은 생략하겠습니다.
'Java > Java 공부' 카테고리의 다른 글
Java 입력받은 숫자의 합을 구하는 예제 ( while, flag ) (0) | 2016.09.01 |
---|---|
Java 누적합계가 100을 넘지 않는 가장 큰 수 찾기 (0) | 2016.09.01 |
DB에서 파일 가져오기 (1) | 2016.07.25 |
DB에 파일 집어넣기 (0) | 2016.07.25 |
String 클래스 (0) | 2016.07.18 |