Posts 자바-5. 반복문(while, do~while문)
Post
Cancel

자바-5. 반복문(while, do~while문)

소스를 그냥올리는것보다 더 의미있는 소스를 포스팅하는게 좋을거같아 다른양식으로 더 올려볼려한다

while문

while문 이해하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) {
/*
 * 출력예)1
 * 		2
 * 		...
 * 		10
 *
 */
  int a = 1;
  while(a<=10) 
  {
    System.out.print(a++);
  }

  System.out.println();
  a = 11;

  do 
  {
    System.out.println(a++);
  }while(a<=10);
}
1
2
12345678910
11

-> 이것을 보면 while문은 조건이참일때까지 반복 do while문은 무조건 한번실행후, while조건에 만족할때까지 반복한다.

점수 학점 프로그램

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
public static void main(String[] args) {
/* 문제) 점수를 입력받아 80점 이상이면 합격메시지를 그렇지
* 않으면 불합격 메시지를 출력하는 작업을 반복하다가
* 0~100점 이외의 점수가 입력되면 종료하는 프로그램
* 입.출력예) 점수를 입력하세요. : 50
*  		죄송합니다. 불합격입니다.
*  		점수를 입력하세요 : 95
*  		축하합니다. 합격입니다.
*  		점수를 입력하세요. : 101
*/
  Scanner scn= new Scanner(System.in);
  int jumsu =0;
  System.out.print("점수를 입력하세요. :");
  jumsu = scn.nextInt();

  while(jumsu >=0 && jumsu <=100)  //점수가 0~100까지의 범위
                                   //다른범위일경우 while문 빠져나감
  {
    if(jumsu >=80)
    {
      System.out.println("축하합니다. 합격입니다.");
    }
    else
    {
      System.out.println("죄송합니다.불합격입니다.");
    }
    System.out.println("점수를 입력하세요. :");
    jumsu= scn.nextInt();
  }
}
1
2
3
4
5
6
7
점수를 입력하세요. :29
죄송합니다.불합격입니다.
점수를 입력하세요. :
89
축하합니다. 합격입니다.
점수를 입력하세요. :
-2

while 빠져나오기

무한루프처리, break하는법

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
public static void main(String[] args) {
//무한루프로 처리해서 break하는방법
  Scanner scn= new Scanner(System.in);
  int jumsu =0;

  while(true)  // 무한루프 돌릴려면 조건식 true만 넣으면된다.
  {
    System.out.print("점수를 입력하세요. : ");
    jumsu = scn.nextInt();

    if(jumsu <0 || jumsu > 100)
    {
      System.out.println("점수가 잘못입력되었습니다.");
      break; //감싸고있는 첫번째 반복문을 빠져나간다.
    }
    if(jumsu >= 80)
    {
      System.out.println("축하합니다.합격입니다.");
    }
    else
    {
      System.out.println("죄송합니다.불합격입니다.");
      continue; //아래코드실행안하고 감싸고있는 첫번째 반복문 으로간다. 
                //만약 for문으로 가면 ++부터 실행한다.
    }
  }
}
1
2
3
4
5
6
점수를 입력하세요. : 80
축하합니다.합격입니다.
점수를 입력하세요. : 27
죄송합니다.불합격입니다.
점수를 입력하세요. : -2
점수가 잘못입력되었습니다.

->이문제는 break 와 continue를 사용해서
반복문 조건을 빠져나오는 제어문이다.

break : 나를 감싸는 첫째의 반복문을 빠져나오는것이다. continue : 나를 감싸는 첫째의 반복문으로 돌아가는것이다.

이두개의 차이점을 잘알고 사용을하자.

무한루프 처리는 while(true) 조건이나, while(참조건 ex) 1=1;) 사용해 처리할수있다.

홀수합구하기 프로그램(while문, break문사용)

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
public static void main(String[] args) {
/* 문제) 정수를 계속 입력 받다가 0이 입력되면 입력된 수중
* 홀수의 합과 평균을 출력하는 프로그램
* 입력예)5 8 17 6 31 0
* 출력예)홀수의 합 = 53
* 		홀수의 평균 = 17
// a선언, 0이면 빠져나오기, 홀수합선언, 
*/
  Scanner scn= new Scanner(System.in);
  int a;
  int hab=0;
  int count =0;

  while(true)
  {
    a = scn.nextInt();
    if(a == 0) 
    {
      break;
    }
    if(a % 2 == 0) //홀수이면
    {
      continue;		// continue 반복문의 맨앞으로 간다
    }
    hab += a;
    count ++;
  }
  System.out.printf("홀수의 합 = %d\n",hab);
  System.out.printf("홀수의 평균 = %d\n",hab/count);
}
1
2
3
3 1 2 4 5 6 2 7 0
홀수의 합 = 16
홀수의 평균 = 4

do ~while문

홀수합구하기 프로그램(while문, break문사용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
//do while문제 
  Scanner scn= new Scanner(System.in);
  int a;
  int hab=0;
  int count =0;

  do
  {
    a = scn.nextInt();
    if(a % 2 != 0) //홀수이면
    {
      hab += a;
      count ++;
    }
  }while(a != 0);
  System.out.printf("홀수의 합 = %d\n",hab);
  System.out.printf("홀수의 평균 = %d\n",hab/count);
}
1
2
3
3 1 2 4 5 6 2 7 0
홀수의 합 = 16
홀수의 평균 = 4

do while문의 생김새는 대략

do { 조건식 }while(조건식)이다.

do 먼저 한번실행하고 while문의 조건이 아닐때까지 반복한다.

메시지출력 프로그램

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public static void main(String[] args) {
/* 문제) 아래와 같이 메시지를 출력하고 숫자를 입력받아 선택한
* 번호에 해당하는 메시지를 출력하는 작업을 반복하다가 4가
* 입력되면 메시지 출력후 종료하는 프로그램 작성.
* (1~4 이외의 숫자가 입력되면 "잘못 선택하였습니다."
* 라고 출력 
* 입출력예)
* 1. 입력하기
* 2. 출력하기
* 3. 삭제하기
* 4. 끝내기
* 작업할 번호를 선택하세요. : 5
* 
* 잘못 선택하였습니다.
* 1. 입력하기
* 2. 출력하기
* 3. 삭제하기
* 4. 끝내기
* 작업할 번호를 선택하세요. : 4
*
* 끝내기를 선택하셨습니다.
* */
  Scanner scn= new Scanner(System.in);
  int input = 0;
  do
  {
    System.out.println("1.입력하기");
    System.out.println("2.출력하기");
    System.out.println("3.삭제하기");
    System.out.println("4.끝내기");
    System.out.print("작업할 번호를 선택하세요. :");

    input = scn.nextInt();
    switch(input)
    {
      case 1: System.out.println("입력하기를 선택하셨습니다.");
        break;
      case 2: System.out.println("출력하기를 선택하셨습니다.");
        break;
      case 3: System.out.println("삭제하기를 선택하셨습니다.");
        break;
      case 4: System.out.println("끝내기를 선택하셨습니다.");
        break;
        default:
        System.out.println("잘못입력하셨습니다.");
    }
  }while(input != 4);
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
1.입력하기
2.출력하기
3.삭제하기
4.끝내기
작업할 번호를 선택하세요. :3
삭제하기를 선택하셨습니다.
1.입력하기
2.출력하기
3.삭제하기
4.끝내기
작업할 번호를 선택하세요. :4
끝내기를 선택하셨습니다.

switch 문으로 위문제 바꿔보기

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
public static void main(String[] args) {
  int input;
  Scanner scn= new Scanner(System.in);
  while(true)
  {
    System.out.println("1.입력하기");
    System.out.println("2.출력하기");
    System.out.println("3.삭제하기");
    System.out.println("4.끝내기");
    System.out.print("작업할 번호를 선택하세요. :");
    input = scn.nextInt();
    switch(input)
    {
      case 1: System.out.println("입력하기를 선택하셨습니다.");
        break;
      case 2: System.out.println("출력하기를 선택하셨습니다.");
        break;
      case 3: System.out.println("삭제하기를 선택하셨습니다.");
        break;
      case 4: System.out.println("끝내기를 선택하셨습니다.");
        break;
        default:
          System.out.println("잘못입력하셨습니다.");
    }
    if(input == 4) 
    {
      break;
    }	
  }
}

-> break를 사용하여 무한루프에서 예외처리를 해주었다.

이렇게 반복문을 연습해보았다.

정리하자면 while 문 , do while문 두가지를 사용해보았다.

두가지의 반복문에서 do while문은 우선실행하고 조건을 검색한다는 특이사항이있다.

또한 break문과 continue문을사용하여 반복조건에서 예외처리를 해줄수있다는것도 알게되었다.

이상 이번 포스팅 끄읏!~

This post is licensed under CC BY 4.0 by the author.