JAVA_반복문(For/While)

뚱이아저씨·2023년 1월 28일
0

자바

목록 보기
5/15
post-thumbnail

반복문 For

for반복문

  • for(초기화식; 조건식/종료식; 증감식;){실행문}
  • for문의 기능은 실행문을 반복한다.
  • 특정 조건에 맞춰서 정해진 횟수를 반복한다.

for출력 순서

for 출력 순서

for(int i=0; ④i<10; ③i++){System.out.println("i");
}
  1. int i=0;부터 시작
  2. 아직 int가 0이기 때문에 System.out.println("1");이 실행
  3. i++로 i를 1로 증감 시키고 i에 저장
  4. i가 1이기 때문에 조건식은 i<10->1<10
  5. 조건식에서 아직 10보다는 작으니 반복문이실행되고 다시 ①(초기화식)으로 넘김
  6. 초기화식은 int i=0에서 int i=1이 됨계속 이런식으로 for문이 반복 됨

반복문에서 i를 2씩 증가하게 만들기

int i=1;
//복합 대입 연산자를 사용하여 i*=2를 하게 되면 2씩 증가
for(;i<10;i*=2){
	System.out.println(i);
}

for출력 예시
문제 : 클래스를 생성해 아래 내용을 수행하세요
1. 입력
2. 출력
3. 수정
4. 삭제
0. 프로그램 삭제

Scanner sc = new Scanner(System.in);

//계속 for문이 실행 될 수 있게 무한반복은 하되 프로그램 종료를
//하면 프로그램이 꺼질수 있게 하려면 그냥 for(;;)으로 무한 반복 시켜주면 된다.
for(;;){
	System.out.println("1. 입력");
			System.out.println("2. 출력");
			System.out.println("3. 수정");
			System.out.println("4. 삭제");
			System.out.println("0. 프로그램 종료");
			System.out.print("> ");
			int menu = sc.nextInt();
			
			boolean end = false;
			if(menu == 1) {
				System.out.println("입력 페이지 입니다.");
			}else if(menu == 2) {
				System.out.println("출력 페이지 입니다.");
			}else if(menu == 3) {
				System.out.println("수정 페이지 입니다.");
			}else if(menu == 4) {
				System.out.println("삭제 페이지 입니다.");
			}else if(menu == 0) {
				System.out.println("프로그램 종료");
				//retrun은 처음으로 값을 반환하고 메소드 자체를 종료 시킨다.
				//return;
				//프로그램을 종료 시키는 다른 방법
				//프로그램 강제 종료 시키는 법 : System.exit(0);
				end = true;
				break;
				
			}else {
				System.out.println("없는 메뉴 번호 입니다.");
			}
			if(end) {
				break;
			}
}

이중 for문 출력 순서

for(int i=1; i<=5; i++){for(int j=1; j<=5; j++){
		}
}
  • 1번이 한번 실행될 때 2번은 5번 실행되고
  • i++해서 1번 for문이 2번쨰 실행될때 또
    2번 for문이 5번 실행되는 식으로 출력 된다.

2중 for문 출력 예시

int dan = 2;
int unit = 1;

for(; dan<=9; dan++){ //여기서 한번 for문이 돌때

	//위에서 dan을 초기화 하기는 했지만 for문 안에서 재할당을 해주지 않으면
	//2단만 나오게 된다 왜냐하면 9번이 돌고 unit++로 10이 되었기 때문에
	//더이상 첫번째 for문을 실행 시켜 줄 수 없다.
	//그렇기때문에 unit을 for문안에서 한번더 재할당을 시켜준것이다.

	for(unit=1; unit<=9; unit++){ //여기 for문은 9번을 돈다.
		System.out.printf("%d * %d = %d\n", dan, unit, dan*unit);
	}
	System.out.println();
}

반복문 While

While

  • while(조건식/boolean) {반복할 실행문}
  • while문의 실행문을 반복한다.
  • while(조건식 true나 false의 값이 되는 것만 실행)
  • 즉, flag변수만 들어 올 수 있다.
    flag변수 : 결과값이 true / false로 나오는 변수

for문과 비교한 while반복문 출력 예시

int dan = 2;
int unit = 1;

for(; dan<=9; dan++){ //여기서 한번 for문이 돌때

	//위에서 dan을 초기화 하기는 했지만 for문 안에서 재할당을 해주지 않으면
	//2단만 나오게 된다 왜냐하면 9번이 돌고 unit++로 10이 되었기 때문에
	//더이상 첫번째 for문을 실행 시켜 줄 수 없다.
	//그렇기때문에 unit을 for문안에서 한번더 재할당을 시켜준것이다.

	for(unit=1; unit<=9; unit++){ //여기 for문은 9번을 돈다.
		System.out.printf("%d * %d = %d\n", dan, unit, dan*unit);
	}
	System.out.println();
}

while 출력 문제
문제 : 클래스를 생성해 아래의 내용을 수행

  • 중접 while문을 사용하여
  • GuGuDan프로그램 제작하여 출력
int dan = 2;
int unit = 1;

while(dan<=9){
	while(unit<=9){
		System.out.printf("%d * %d = %d", dan, unit, dan * unit);
		unit ++;
	}
		dan++;
		unit = 1; //unit을 1로 재할당을 해줘야 2단에서 멈추지 않고 9단까지 간다.
		System.out.println();
}

반복문 Do/While문

  • 일단 do가 조건문에 부합하지 않더라도 무조건 한번은 실행
  • 실행 후 while조건문에 부합을 하는지 안하는지 판단 후 부합 하지 않으면 그대로 종료
  • 즉, do에 있는 조건문이 무조건 한번은 실행이 된다.

Do/While문 예시
문제 : Quiz01클래스를 생성해 아래 내용을 수행하세요.

  • 두 수(정수)를 입력 받아서(Scanner 사용)
  • 두 수의 합이 0이 될 때 까지 프로그램이 반복 실행(0이면 종료
  • do-while문 사용 종료
Scanner sc=new Scanner(System.in);
int num1;
int num2;
int result;

do{
	System.out.print("숫자1: ");
	num1=sc.nextInt();
	System.out.print("숫자2: ");
	num2=sc.nextInt();
	
	result=num1+num2;
	System.out.printf("%d+%d=%d\n", num1,num2,result);
}while(result !=0;);
//while문의 조건에 부합이 될 때까지 계속 반복/예)result가 0이 아니면 계속 반복
System.out.println("합계가 0이므로 프로그램을 종료 합니다");
profile
뚱이아빠의 개발자도전기

0개의 댓글