본문 바로가기

자바(JAVA)
[자바(Java)] 제어문 - 반복문

// 반복문(for문)

for(초기값; 조건문; 증가값) or for(시작값; 끝값; 증가값) {
    실행할 구문;
}


- 특정 코드를 개발자가 원하는 만큼 반복 실행한다.

a. for ~ for (int i = 1; i <=3; i++) {} > 대부분 사용
    - i : 루프 변수★
    - 무한루프 : 회전수를 미리 예측하기 힘든 경우에 사용
        ~ for (;;) {} 
            > 원래는 for (; true;) 인데 조건식을 생략하면 자동으로 true가 대입됨.
            > 초기식, 증감식은 영향을 미치지 않음.

    1. 초기식 실행
        ~ int i = 1;

    2. 조건식 실행
        2-1. true: 실행블럭을 실행한다.
        2-2. false
            ~ i <= 3; 
    3. 실행문
        ~ System,out.println("Hello")

    4. 증감식 실행
        ~ i++;

    5. 조건을 만족할 때까지 2~4 반복


for문

package ex01.sample03;

public class Ex03_1 {

	public static void main(String[] args) {
		for(int i = 0; i <5; i++) {
			System.out.println("처음으로 공부하는 자바 프로그래밍");
		}
		
	}
}

\!Quiz - 5, 4, 3, 2, 1 순서대로 출력할 수 있게 위 코드 수정하기!

package ex01.sample03;

public class Ex03_1 {

	public static void main(String[] args) {
		for(int i = 5; i > 0; i--) {
			System.out.printf("%d : 처음으로 공부하는 자바 프로그래밍\n", i);
		}
		
	}
}


**나에게 결정적인 오류 해결은 println을 printf로 바꾸는 것이었다.(대신 뒤에 개행문자 넣어주기)


!Quiz - 1부터 10까지의 합을 구하기!

- for문 사용하기

package ex01.sample03;

public class Ex03_2 {
	//int sum; //클래스가 가지고 있는 변수: 멤버 필드

	public static void main(String[] args) {
		//1부터 10까지의 합을 구하는 프로그램을 작성
		
		int sum; // 메서드가 가지고 있는 변수: 지역 변수
		sum = 0;
				
		for(int i = 1; i <11; i++) {
			sum = sum + i;
		}
		
		System.out.printf("1부터 10까지의 합은 : %d\n", sum);
	}

}


**
- 클래스가 가지고 있는 변수: 멤버 필드
    ~ 변수 초기화가 따로 필요 없음.(int는 자동으로 0)

- 메서드가 가지고 있는 변수: 지역 변수
    ~ 변수 초기화를 반드시 해줘야 함.
**


!Quiz - 1부터 입력값까지의 합을 구하기!

scanner 추가

package ex01.sample03;

import java.util.Scanner;

public class Ex03_3 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);		
		int sum=0; // 메서드가 가지고 있는 변수: 지역 변수
		int num;
				
		System.out.printf("숫자 몇까지의 합을 구할 건지 입력해 주세요 : ");
		num = sc.nextInt(); 
				
		for(int i = 1; i <= num; i++) {
			sum = sum + i;
		}
		
		System.out.printf("1부터 %d까지의 합은 : %d\n", num, sum);
		
	}

}

구구단

package ex01.sample03;

import java.util.Scanner;

public class Ex03_4 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int dan;
		
		System.out.printf("원하는 구구단은 : ");
		dan = sc.nextInt();
		
		for(int i= 1; i <= 9; i++) {
			System.out.printf("%d X %d = %d \n", dan, i, dan*i);
		}
	}

}

// 중첩 for문, nested for
- 2중 for문, 3중 for문 ... n중 for문으로 부름


이중 반복문1

package ex01.sample03;

import java.util.Scanner;

public class Ex03_4 {

	public static void main(String[] args) {
		for(int i = 2; i <=9; i++) {
			for(int j = 1; j <=9; j++) {
				System.out.printf("%d X %d = %d\n", i, j, i*j);
			}
			System.out.printf("\n");
		}
	}
}

 

이중 반복문2

package ex01.sample03;

import java.util.Scanner;

public class Ex03_4 {

	public static void main(String[] args) {
				
		for(int i = 1; i <=9; i++) {
			for(int j = 2; j <=9; j++) {
				System.out.printf("%5d X %d = %2d", j, i, j*i);
			}
			System.out.printf("\n");
		}
	}

}

//while문

- 조건을 만족하면 실행문을 실행한 뒤, 다시 조건을 확인 후 반복한다.

초기값;
while(조건문) {
    실행할 구문;
    증가값;
}

while 문으로 누적 합 구하기

package ex01.sample01;

public class Ex01_1 {

	public static void main(String[] args) {
		
		int sum = 0;
		int i = 1;
		while(i <= 10) {
			sum += i;
			i++;
		}
		System.out.printf("1부터 10의 합은 : %d\n", sum);

	}

}

//do-while문

- 최소 한 번은 실행문을 실행하고, 다시 조건을 확인 후 반복한다.


package com.test.java;

public class Ex33_while {
    
    public static void main(String[] args) {

	m2();

    } //main

	private static void m2() {
	
	int num = 10;
	
	while (num < 5) {
	    System.out.println(num);
	    num++;
	}
	System.out.println("while문 끝");
	System.out.println();
	
	
	do {
	    System.out.println(num);
	    num++;
	} while(num < 5);
	System.out.println("do while문 끝");
	
	System.out.println("종료");
	
    } //m2

}

// 향상된 for문, Enhanced for statement

- foreach문

- 집합을 가지고 루프를 돌릴 때 사용

- 배열의 요소를 순차적으로 탐색하는 for문

- 무조건 처음부터 끝까지 모두 가져와야 함.


package com.test.obj.type;

public class Ex69_Generic {

	public static void main(String[] args) {

		m2();
		
	} //main

	private static void m2() {
		
		//향상된 for문
		
		String[] list = { "강아지", "고양이", "병아리", "오병이", "송아지" };
		
		
		for(int i = 0; i < list.length; i++) {
			System.out.print(list[i] + "\t");
		}
		System.out.println();
		
		for(String animal : list) {
			System.out.print(animal + "\t");
		}
		System.out.println();
		
	}
	
} //Main

'자바(JAVA)' 카테고리의 다른 글

[자바(Java)] String  (1) 2022.09.23
[자바(Java)] 배열(Arrays)  (0) 2022.09.22
[자바(Java)] 제어문 - 조건문  (0) 2022.09.22
[자바(Java)] package  (0) 2022.09.22
[자바(Java)] 객체 지향 언어  (0) 2022.09.22