[SEB BE] Section 1. 반복문

박두팔이·2022년 12월 23일
0

자바

목록 보기
2/26

for문

for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행합니다.

public class Main {
  public static void main(String[] args) {
    int sum = 0;
    // for (초기화; 조건식; 증감식)
    for(int num = 0; num < 10; num++) {	
      sum += num;
    }
    System.out.println(sum); // 1~9의 합인 45가 출력됩니다.
  }
}
  • 초기화는 for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정합니다.

  • 조건식은 계속 반복할지 여부를 결정하는 조건입니다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝납니다.

  • 증감식은 반복 횟수를 결정하는 규칙입니다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킵니다.

향상된 for문 (Enhanced for 문)

자바에서는 향상된 for문을 제공합니다. 향상된 for문은 반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않습니다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나갑니다.

public class EnhancedForLoop {
  public static void main(String[] args) throws Exception {
    String[] names = {"kimcoding", "javalee", "ingikim"};
    for(String name : names) {
      System.out.println(name + "님은 자바를 공부중 입니다.");
    }
  }
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/

문제 1이상의 자연수를 입력받아 소수인지 여부를 리턴하는 코드

for문 제어할 때 i<num을 i<=(int)Math.sqrt(num)로 바꿀 수 있다.

while문

while문은 조건식이 true일 경우계속 반복합니다.

int num = 0, sum = 0;
while(num <= 10) {
  sum += num; 
  num++;
}
System.out.println(sum);
  • 예제
    1. 문제: num을 입력받아 홀수인지 true/false인지 리턴하라
    2. 조건:
    • boolean타입으로 리턴하기
    • while문 사용
    • for사용 금지
    • / , % 연산자 사용 금지
    • 0짝수로 간주
public class Solution { 
	public boolean isOdd(int num) {
		//조건문을 사용하여 짝수인 경우 return false를,
		//홀수인 경우 return true;를 작성해야 합니다.
    	//TODO :
  
	1. 음수 양수 절대값으로 씌워주기
	2. num이 0보다 크면 반복문 실행
    3. num-2-2-2-2..... 반복실행 
    4. num이 홀수라면 true를 리턴

    num = Math.abs(num);  
    while(num>0){  
      num -= 2; 
      if(num==1) return true; 
    }
    return false; //아니면 모두 false
	}
}

do-while문

블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속 할지 결정하는 경우에 사용합니다.

// do-while의 기본형식
do {
  (1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);

do-while문이 처음 실행될 때 do{(1)실행문을 먼저 실행합니다. (1)실행문이 모두 실행되면 }while((2)조건식); 을 평가합니다. 그리고 그 결과가 true이면 (1)실행문 → (2)조건식으로 반복 실행을 하고, false이면 do-while문을 종료합니다.

import java.util.Scanner;

public class Main {
  public static void main(String args[]){
    int input = 0, randomNum = 0;

      randomNum = (int)(Math.random() * 10) + 1; // 1 ~ 10 임의의 수를 생성
      Scanner scanner = new Scanner(System.in);

      do{
        System.out.println("1과 10 사이의 정수를 입력하세요");
        input = scanner.nextInt();

        if(input > randomNum) {
          System.out.println("더 작은 정수를 입력하세요");
        } else if (input < randomNum) {
          System.out.println("더 큰 정수를 입력하세요");
        }
      } while(input != randomNum);
      System.out.println(randomNum +" 정답입니다!");
  }
}
profile
기억을 위한 기록 :>

0개의 댓글