자바

JAVA STEP 17. for문

IT의 큰손 2023. 2. 9. 18:09
728x90

★ 반복문

- 특정 코드를 원하는 횟수만큼 반복 실행

- 생산성 향상 + 유지보수성 향상

- 종류

  • for
  • while
  • dowhile

★ for문

  • 기본 조건문 양식
    •  
for (초기식; 조건식; 증감식) {
		실행문; x	반복
}
  • ex1) 요구사항 : 안녕하세요 * 5번 출력
  • 소스코드
  •  
//-i : 루프 변수(***)
		for(int i=1; i<=10; i=i+1) {
			//System.out.println("Hello");
			hello();
		}
		
	}//m1

		//for 문 실행 순서
		//1. 초기식 실행 : int i=1;
		//2. 조건식 실행 : i<=3;
		//2.1 true : 실행블럭을 실행한다.
		//2.2 false : for문을 빠져나간다.
		//3. 실행문 : Hello
		//4. 증감식 실행 : i=i+1
		//5. 조건식 실행 : i<=3;
		//6. 실행문 : Hello
		//7. 증감식 실행 : i=i+1
		//8. 조건식 실행 : i<=3;
		//9. 실행문 : Hello
		//10. 증감식 : i=i+1
		//11. 조건식 실행 : i<=3; -> i=4 따라서 false
		//12. for문 탈출(종료)
  • ex2) 요구사항] 숫자 1~10까지 출력
  • 소스코드
  •  
		int num = 1;
		
		for(int i=0; i<100; i++) {
		System.out.println(num);
		num++;
		}
		
		//초기식, 조건식, 증감식
		for (int i=2; i<=100; i+=2) {
			System.out.println(i);
		}
		System.out.println();
	}//m3()
  • ex3) 요구사항]  1~10까지의 합?
  • 소스코드
  •  
		int sum = 0; //누적 변수(***반드시 0으로 초기화)
		
		for(int i=1; i<=100; i++) {
			//sum = 0+1
			//sum = 1+2
			
			sum += i; 
			
			
		}
		System.out.println(sum);
	}//m4()
  • ex4) 요구사항] 사용자로부터 숫자를 입력받아 1~입력한 숫자까지 총 합을 구하시오.
  • 소스코드
  •  
		Scanner scan = new Scanner(System.in);
		
		System.out.print("숫자 : ");
		int num = scan.nextInt();
		
		int sum = 0;
		
		for (int i=1; i<=num; i++) {
			sum += i;
		}
		System.out.printf("1 ~ %d = %d\n", num, sum);
	}//m5()
  • ex5) 요구사항] 사용자로부터 숫자를 10개 입력받아 총합을 구하시오.
  • 소스코드
  •  
		Scanner scan = new Scanner(System.in);
		
		int sum = 0;
		
		for (int i=0; i<10; i++) {
		
			System.out.print("숫자를 입력하세요 : ");
			int num = scan.nextInt();
			
			sum += num; //사용자가 입력한 숫자를 sum에 누적하기
		
		}
		System.out.println(sum);
	}//m6();
  • ex6) 요구사항] 구구단 출력
  • 소스코드
  •  
		/*
		 	5 x 1 = 5
		 	5 x 2 = 10
		 	..
		 	5 x 9 = 45
		 */
		
		for (int i=1; i<10; i++) {
			
			System.out.printf("5 x %d = %2d\n", i, (5*i));
			
		}
		//구구단 출력 > 사용자가 입력한 단 출력
		Scanner scan = new Scanner(System.in);
		
		System.out.print("단을 입력하세요 : ");
		int dan = scan.nextInt();
	
		for (int i=1; i<10; i++) {
			
			System.out.printf("%d x %d = %2d\n",dan, i, (dan*i));
			
		}
	}//m7()
  • ex7) 무한 루프, Infinite Loop
  • 소스코드
  •  
		int n = Integer.MIN_VALUE;
		System.out.println(n);
		
		//10바퀴 
		/* 이렇게 증감 연산자를 잘못 입력해서 돌면 대략 > int최대값 : 21억 바퀴가 돔.
		 	for (int i=0; i<10; i--) {
			System.out.println("안녕하세요.");
		}*/
		
		//무한 루프 일부러 만들기
		// > 회전수를 미리 예측하기 힘든 경우에 사용
		/* 진정한 무한루프
		 	for (;;) {
			System.out.println("무한 루프");
		}*/
	}//m8()
  • ex8) 분기문
  •  break
  • continue
  • 독립 사용 불가능
  • 반복문과 같이 사용
  • if문은 인식하지 않는다. (if문은 탈출 대상으로 인식하지 않는다.) 
  • 소스코드
  •  
for (int i=1; i<=10; i++) {
			
			//break; //break를 여기다가 두면, Unreachable code 즉, 아래 코드가 실행되지 않는다.
				     //자신이 속한 제어문을 탈출한다.(for)
			
			if (i == 5) {
				break;	//자신이 속한 제어문을 탈출한다.(if(x) > for(O))
			}
			
			System.out.println(i);
		
		}
		
		System.out.println("종료");
	}//m9()
	
		public static void m10() {
		
		//기본적으로 1~10까지 출력 루프
		// > 사용자가 개입 > 루프 횟수 추가 지정
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("숫자 : ");
		int num = scan.nextInt();
		
		//방법 1
		for(int i=1; i<10; i++) {
			
			System.out.println(i);
			
			if(i==num) {
				break;
			}
		}
		
		//방법 2
		for (int i=1; i<=num; i++) {
			System.out.println(i);
		}
		
	}//m10()
  • ex9) 요구사항] 사용자로부터 숫자를 원하는 만큼 입력 > 합을 구하시오.
  • 소스코드
  •  
//		 횟수를 예측하지 못하는 반복문 > 무한 루프
		
		Scanner scan = new Scanner(System.in);
		
		int sum = 0;
		int count = 0;
		
		for(;;) {
			
			System.out.print("숫자(0을 입력하면 종료) : ");
			int num = scan.nextInt();
			
			if(num==0) {
				System.out.printf("총 %d개의 숫자를 입력했고, 입력하신 숫자의 합은 : %d 입니다.",count, sum);
				break;
			}
			
			sum += num;
			count++;
			
		}
		
	}//m11()
	
	public static void m12() {
		
		//break 	> 완전 중지
		//continue	> 일시 중지 
		
		for(int i=1; i<=10; i++) {
			
			if (i == 5) {
				continue; //나머지 코드를 실행하지 않고, 반복문의 시작으로 돌아가라
						  //즉, 1~4까지 실행되고 5를 만났을 때, 아래로 가지 않고, 위로 올라가서 바로 6이되서 출력이 되는 것임.(skip)
			}
			
			System.out.println(i);
			
		}
		
	}

 

728x90