반복문 (1) - for 문 (23.04.20)

·2023년 4월 20일
0

Java

목록 보기
9/35
post-thumbnail

📝 반복문 - for 문


💡 반복문

프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로 특정 문장들을 반복해서 수행하도록 함

✏️ for 문

끝이 정해져 있는(횟수가 지정되어 있는) 반복문

    for(초기식 ; 조건식 ; 증감식){
    	반복 수행할 코드
    }
  • 초기식 : for문을 제어하는 용도의 변수 선언
  • 조건식 : for문의 반복 여부를 지정하는 식 (다음 반복 진행해?)
    보통 초기식에 사용된 변수를 이용하여 조건식을 작성함
  • 증감식 : 초기식에 사용된 변수를 for문이 끝날 때마다 증가 또는 감소시켜
    조건식의 결과를 변하게 하는 식

[예시 1] for문 기초 사용법1
- 1~10 출력하기
--> 1부터 10까지 1씩 증가하며 출력

		for(int i = 1 ; i <= 10 ; i++) {
        //    초기식   ;  조건식  ; 증감식
        
		// 진행 순서
        // ① 초기식 ② 조건식 ③ 반복 수행할 코드
        // ④ 증감식 ⑤ 조건식 ⑥ 반복 수행할 코드 ... (조건식이 false가 될 때까지 이 과정을 반복)
        
			System.out.println(i + "출력");

[예시 2] for문 기초 사용법2
- 3에서 7까지 1씩 증가하며 출력
--> i의 값이 7 이하일 때 true가 되는 조건식

		for(int i = 3 ; i <= 7 ; i++) {
			System.out.print(i + " ");
		}

[예시 3]
- 2 부터 15 까지 1씩 증가하며 출력

		for(int i = 2 ; i <= 15 ; i++) {
			System.out.print(i + " ");
		}

[예시 4]
- 1부터 입력받은 수까지 1씩 증가하여 출력

		Scanner sc = new Scanner(System.in);
		
		System.out.print("끝 번호 : ");
		int input = sc.nextInt();
		
		for(int i = 1 ; i <= input ; i++) {
			System.out.println(i);
		}

[예시 5]
- 1부터 입력받은 수까지 2씩 증가하며 출력

		Scanner sc = new Scanner(System.in);
		
		System.out.print("끝 번호 : ");
		int input = sc.nextInt();
		
		for(int i = 1 ; i <= input ; i += 2) {
									// i = i + 2 -> i에 기존 i값 + 2 대입	
			
			System.out.println(i + "출력");
		}

[예시 6]
- 1.0부터 입력받은 실수까지 0.5씩 증가하며 출력

		Scanner sc = new Scanner(System.in);
		
		System.out.print("끝나는 실수 : ");
		double input = sc.nextDouble();
		
		for(double d = 1.0 ; d <= input ; d += 0.5) {
			
			System.out.println(d + "출력");
		}

[예시 7]
- 영어 알파벳 A 부터 Z 까지 한 줄로 출력

		// * char 자료형은 문자형이지만 실제로는 정수(문자표 번호)를 저장한다.
		for(int i = 'A' ; i <= 'Z' ; i++ ) {
			System.out.print((char)i);
		}
		
		System.out.println("\n------------------------------------------");
		
		for(char i = 'A' ; i <= 'Z' ; i++) {
			System.out.print(i);
		}

[예시 8]
- 10에서 1까지 1씩 감소하며 출력

		for(int i = 10 ; i >= 1 ; i--) {
			System.out.println(i);

[예시 9] for문 응용 1 : 반복문을 이용한 값의 누적
- 1부터 10까지 모든 정수의 합 구하기

		int sum = 0; // 반복되어 증가하는 i 값의 합계를 저장할 변수
					// 0으로 시작하는 이유 : 아무것도 더하지 않음으로
					// 					정확히 결과를 도출할 수 있기 때문에
		
		for(int i = 1 ; i <= 10 ; i++) {
			
			// sum = sum + i;
			sum += i;
		}
		System.out.println("합계 : " + sum);

[예시 10] for문 응용 2
- 정수 5개를 입력받아서 합계 구하기

		Scanner sc = new Scanner(System.in);
		
		int sum = 0; // for문 밖에 존재하는 변수로
					// 아래 for문이 끝나도 사용 가능
		
		for(int i = 1 ; i <= 5 ; i++) {
			System.out.print("입력 " + i + " : ");
			int input = sc.nextInt();
			
			sum += input; // sum에 입력받은 input 값을 누적
		}
		
		System.out.println("합계 : " + sum);

[예시 11]
- 정수를 몇 번 입력 받을지 먼저 입력 받고 입력된 정수의 합계를 출력

  - ex) 입력 받을 정수의 개수 : 3
		입력 1 : 10
		입력 2 : 20
		입력 3 : 30
		합계 : 60
        
		Scanner sc = new Scanner(System.in);
		
		System.out.print("입력 받을 정수의 개수 :");
		int num = sc.nextInt();
		
		int sum = 0;
		
		for(int i = 1 ; i <= num ; i++) {
			
			System.out.print("입력 " + i + " : ");
			int input = sc.nextInt();
			
			sum += input;
			
		}
		
		System.out.println("합계 : " + sum);

[예시 12]
- 1 부터 20 까지 1씩 증가하면서 출력
- 단, 5의 배수에 () 를 붙여서 출력

  ex) 1 2 3 4 (5) 6 7 8 9 (10) 11 ...
		for(int i = 1 ; i <= 20 ; i++) {
			
			if( i % 5 == 0 ) { // i가 5의 배수인 경우
				System.out.print( "(" + i + ") " );
				
			} else { // i가 5의 배수가 아닌 경우
				System.out.print(i + " ");
				
			}
		}

[예시 13]
- 1 부터 20까지 1씩 증가하면서 출력
- 단, 입력 받은 수의 배수는 () 표시

  ex) 괄호를 표시할 배수 : 3
      1 2 (3) 4 5 (6) ...
		Scanner sc = new Scanner(System.in);
		
		System.out.print("괄호를 표시할 배수 : ");
		int num = sc.nextInt();
		
		for(int i = 1 ; i <= 20 ; i++ ) {
			
			if( i % num == 0) {
				System.out.print( "(" + i + ") ");
			} else {
				System.out.print( i + " ");
			}
		}

[예시 14] 구구단 출력

2 ~ 9 사이 수를 하나 입력 받아 해당 단을 출력
단, 입력 받은 수가 2 ~ 9 사이 숫자가 아니면 "잘못 입력 하셨습니다" 출력
		Scanner sc = new Scanner(System.in);
		
		System.out.print("단 입력 : ");
		int dan = sc.nextInt();
		
		if(dan >= 2 && dan <= 9){ // dan 2~9 사이일 경우
			
			for(int i = 1 ; i <= 9 ; i++) {
				System.out.printf("%d X %d = %d\n", dan, i, dan * i);
			}
			
		} else { // dan 2~9 사이가 아닌 경우
			System.out.println("잘못 입력 하셨습니다.");
			
		}

[예시 15] 19단 출력기

2 ~ 19단 사이 단을 입력 받아서 X 1 ~ X 19 까지 출력
단, 2 ~ 19 사이 단이 입력되지 않으면 "잘못 입력 하셨습니다." 출력
		Scanner sc = new Scanner(System.in);
		
		System.out.print("단 입력 : ");
		int dan = sc.nextInt();
		
		if(dan >= 2 && dan <= 19) {
			
			for(int i = 1 ; i <= 19 ; i++) {
				System.out.printf("%d X %d = %d\n", dan, i, dan * i);
			} 
		} else {
			System.out.println("잘못 입력 하셨습니다.");
		}

✏️ 향상된 for 문 (for each 문)

컬렉션, 배열의 모든 요소를 순차적으로 반복 접근할 수 있는 for문
(순차적 : 0번 인덱스부터 마지막 요소까지 인덱스를 1씩 증가)

  • 작성법
for(컬렉션 또는 배열에서 꺼낸 한 개의 요소를 저장할 변수 : 컬렉션명 또는 배열명){ }

예시

  • 일반 for 문 : 코드가 길고 복잡함
		/*
		for(int i=0; i<studentList.size(); i++) {
			System.out.println( studentList.get(i) );
						// StudentList에서 i번째 인덱스 요소를 얻어와 출력
		}
		*/
  • 향상된 for 문 : 코드가 간결하여 가독성이 증가함
		int index = 0;
		for( Student std : studentList ) {
			// std에는 for문 반복 시마다 0, 1, 2, ... 인덱스 요소들 한 번씩 저장됨
			
			System.out.print( (index++) + "번 : ");
			
			System.out.println( std );
		}
profile
풀스택 개발자 기록집 📁

0개의 댓글