[자바/JAVA] 반복문(for, while, do-while, breack, collection객체반복문)

박정현·2023년 8월 6일
0
post-thumbnail

반복문

이번에는 반복문에 대해 배워보자. 반복문의 종류로는 for문, while문, do-while문이 있다. 반복문은 나중에 CRUD를 구현할 때 자주 쓰이므로 정확히 알아두는 것이 좋다.

반복문은 명령문이나 코드를 반복하며 이는 실행문, 처리문을 반복한다는 의미이다.

반복문을 작성할 때에는 코드 오류를 줄이기 위해 큰틀 먼저 작성하고 채워 넣는다.


1) for문

  • 똑같은 실행문을 반복적으로 실행할 때 사용한다.
  • 조건이 false면 실행하지 않는다.
  • 주어진 횟수만큼 반복한다.
  • 증감식은 무조건 선처리 후증가로 됨 ( i++ = ++i )
  • 가장 많이 사용되는 반복문이다.
✅ for ( **초기화식**; **조건식**; **증감식** ) {
           **실행문**

}

1) for문이 처음 실행될 때 초기화식 실행

2) 조건식을 평가해서 true면 실행문 실행, false면 for블록 실행하지 않고 종료

3) 실행문이 실행되면 증감식을 실행하고 다시 조건식 평가

4) 조건식을 평가해서 true면 실행문 → 증감식조건식 반복, false일 경우 종료

🙋‍♂️ 간단한 예제를 살펴보자

for(int i=1; i<10; i++) {
			//조건이 true일 때 반복 실행
			System.out.println("images/index_"+i+".jpg");
}

🙋‍♂️ 구구단예제

System.out.println("for");
		System.out.println("구구단");

		// 구구단 (2단~9단)

		for (int i = 2; i < 10; i++) {
			System.out.println(i + "단");

			for (int j = 1; j < 10; j++) {
				System.out.println(i + "X" + j + "=" + i * j);

			}

		}

2) while문

  • 데이터베이스의 데이터를 불러오는 데 많이 사용한다.
  • 무한루프에 빠질 가능성이 높기 때문에 주의해야 한다.
    • 증감식을 사용하거나
    • while(true)에서는 break을 사용해서 빠져나온다.
  • for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속 반복된다.
  • 조건이 true면 실행 조건이 false면 한 번도 실행하지 않음
✅ while ( **조건식** ) { **실행문 증감식** // ① 무한루프에 빠질 수 있기 때문에 증감식을 넣어줌 **break;** // ② 혹은 break를 사용하여 while문을 빠져나옴 }

int i =2; //변수초기화 바깥에 함

1) 조건식이 true면 실행문 실행 → 다시 조건식으로 감

2) 조건식이 false면 while문 종료

🙋‍♂️ while(true)를 이용한 로그인기능예제를 살펴보자.

System.out.println("로그인 기능");
		// 메뉴선택: 1.회원가입(join), 2.로그인(login), 3.종료(exit)
		// Scanner, while(true), if, break
		// 아이디, 비밀번호를 입력해서 DB저장 데이터랑 비교
		// 둘다 같으면 "로그인 성공"
		// 아이디가 틀리면 "아이디가 틀립니다."
		// 비밀번호가 틀리면 "비밀번호가 틀립니다" -> 콘솔에 출력

		String id = "m111";
		String pw = "1111";

		Scanner input = new Scanner(System.in);

		while (true) {

			System.out.println("메뉴선택: 1.회원가입(join), 2.로그인(login), 3.종료(exit)");
			String menu = input.next();

			if (menu.equals("login")) {

				System.out.println("아이디 입력: ");
				String userId = input.next();

				System.out.println("비밀번호 입력: ");
				String userPw = input.next();

				if (userId.equals(id)) {
					if (userPw.equals(pw)) {
						System.out.println("로그인성공");
					} else {
						System.out.println("비밀번호가 틀렸습니다.");
					}
				} else {
					System.out.println("비밀번호가 틀렸습니다.");
				}
			} else if (menu.equals("join")) {
				System.out.println("회원가입 페이지");
			} else if (menu.equals("exit")) {
				System.out.println("종료합니다.");
				break;
			} else {
				System.out.println("메뉴 선택 오류입니다. 다시 선택해주세요.");
			}

		}

		input.close();

3) do-while문

  • 무조건 한 번은 실행한다.
  • 한 번은 반드시 실행하는 프로젝트에서 사용한다.
  • while문과 동일하게 무한루프에 빠질 수 있으므로 주의해야 한다.
  • 많이 쓰이지는 않지만 시험에는 자주 나온다.

[ while과 차이점 ]

  • do-while은 한 번 실행하고 조건식 결정
  • while은 조건식을 검사하여 실행할지 결정
✅ do { **실행문** } while ( **조건식** );

1) 실행문 먼저 실행

2) 조건식에서 평가

3) true면 실행문 → 조건식 반복

4) false면 do-while종료

tip) do{}while 큰틀먼저 짜고→ 조건식 작성→ 실행문은 제일 나중에 작성

🙋‍♂️ do-while을 활용한 예제를 살펴보자.

int i = 2;

		do {
			System.out.println(i + "단 입니다.");

			int j = 1;
			do {
				System.out.println(i + "X" + j + "=" + (i * j));
				j++;
			} while (j < 10);

			i++;
		} while (i < 10);

4) break문⭐⭐⭐

  • 메소드, 반복문, switch, 명령문을 종료하는 역할을 한다.
  • break문을 만나면 실행문의 맨 마지막으로 간다.
  • 해당 지점에서 하위에 있는 명령문을 실행하지 않고 코드 블록을 벗어남

  • break를 만나는 즉시 for문을 종료하고 다음 실행문으로 넘어 간다.

5) continue문

  • continue문은 반복문에서만 사용됨
  • continue문이 실행되면 for문의 증감식, 조건식으로 이동됨
  • 반복문을 종료하지 않고 계속 반복을 수행 (break와 차이)
  • 해당지점에서 아래 명령문을 실행하지 않고 코드 블록 끝에서 다시 시작

6) 객체반복문 collection

  • 객체를 출력할 때는 다음과 같은 방법으로 한다.

(1) for문을 이용해서 출력

  • 기본적인 데이터 반복문
  • 범위를 정할 수 있다는 장점이 있다.
    for (int i = 0; i < v1.size(); i++) {
    			System.out.println(v1.get(i));
    		}

(2) for each문을 이용해서 출력

  • for(요소의 타입 변수: 컬렉션객체) { … }
  • 해당 타입에 해당하는 컬렉션객체(list가 담고있음)의 모든 요소를 출력한다.
  • get()을 사용하지 않아도 된다.
  • 객체를 출력하는 가장 간단한 방법이다.
List<integer> list = new Vector<Integer>;

for(integer el: list){
	System.out.println(el);
}

(3) Iterator

  • 컬렉션 객체를 직렬화객체로 바꾸는 것이다.
  • 컬렉션 객체를 출력할 때 사용하는 공식이다.
  • 인터페이스이기 때문에 new객체생성을 못한다.

.
.
.

📚 Reference

신용권, 『혼자공부하는 자』, 한빛미디어(2023)

profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글