[Java] 기초 4

최우형·2023년 2월 20일
1

Java

목록 보기
5/24
post-thumbnail

📌제어문

  • 제어문
    • 조건문 : if문, switch
    • 반복문 : for문, while문, do while

조건문을 사용하면 특정 조건에 부합하는 경우에 어떤 코드를 실행시키면서 어떤 코드는 실행시키지 않을 수 있으며, 반복문을 사용하면 특정한 코드를 반복적으로 실행시킬 수도 있다.

📌조건문

if 문

if문의 소괄호 안에는 boolean 값으로 평가될 수 있는 조건식을 넣어주고, 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 된다.

if (조건식) {
	//조건식이 참이라면 실행되는 블록이다.
} 

if...else 문

if의 조건식이 false가 되면 다음으로 넘어가 else if문의 모든 조건식을 검사한다. else if문의 모든 조건식이 false라면, 나머지 경우를 의미하는 else 블록이 실행된다.

if(조건식1) {
	//조건식1이 참이라면, 실행되는 블록입니다.		
} 
else if (조건식2) {
	//조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록이다.
} 
else {
	//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록이다.
	//else문은 생략 가능하다.
}

Switch 문

switch문도 if문과 마찬가지로 조건 제어문이다. 하지만 switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖는냐에 따라 실행문이 선택된다.

if문은 결과가 true,false 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 if-else를 반복적으로 추가하기 때문에 코드가 복잡해진다. 그러나 switch문은 변수의 값에 따라서 실행문이 결정되기에 if보다 간결하게 코드를 짤 수 있다.

public class Main {
    static Scanner myInput = new Scanner(System.in);
    public static void main(String[] args) {
        String dice = myInput.nextLine(); //주사위 번호 입력

        switch (dice) {
            case "1":
                System.out.println("1번");
                break; //다음 case를 실행하지 않고, switch문 탈출!
            case "2":
                System.out.println("2번");
                break;
            case "3":
                System.out.println("3번");
                break;
            case "4":
                System.out.println("4번");
                break;
            case "5":
                System.out.println("5번");
                break;
            case "6":
                System.out.println("6번");
                break;
            default: //switch문의 괄호 안 값과 같은 값이 없으면, 여기서 실행문 실행
                System.out.println("없는 숫자! " + dice);
                break;
        }
    }
}

case안에 return을 쓸 경우에는 break;를 생략할 수 있다.


📌반복문

반복문은 코드들이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류는 for문, while문, do-while문이 있다.

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문 (Enhaced 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 + "님은 자바를 공부중 입니다.");
    }
  }
}
/*
Javacoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/

for문을 처음 실행할 때, names 배열에서 가져올 첫번째 값이 존재하는지 확인 하고, 값이 존재하면 name에 저장한다. 그리고 그 안의 실행문을 실행한다.
블록 내부의 실행문이 모두 실행되면 다시 names배열에서 가져올 값이 있는지 확인하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료된다.


while문

for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우 계속해서 반복한다.

(초기화);
while(조건식) {
  실행문; //조건식이 참인 동안 실행
  증감식;
}

for문과 while문은 초기화, 증감식 위치만 다를 뿐 상호 대체가 가능하다.

조건식에 true를 사용하면 while(true){ ... } 가 되어서 무한 루프가 돌게 된다.

public class Main {
  public static void main(String[] args) {
  boolean run = true;
  int num = 1;

    while(run){ // while(true) 조건문
      num++; //실행문
      System.out.println(num); //실행문

      if(num == 22) { //조건문, num이 22가 되면 탈출! 얏호!
        run = false;
      }
    }
  }
}

break문 또는 truefalse로 바꾸어 while문을 빠져나갈 수 있다.


do-while문

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

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 +" 정답!");
  }
}

1~10 사이 정수를 변수 randomNum에 저장하고 이 값을 맞출 때까지 반복하는 do-while문이다.


break문

break문은 반복문인 for문, while문, do-while문을 실행 중지할 때 사용된다. 또한 switch문에서도 break문을 사용하여 종료한다.

for (...) {

	break;

}

while (...) {

	break;

}

만약, 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료한다.

public class Main {
    public static void main(String[] args) {
        Outer : for (int i = 3; i < 10; i++) {
            for (int j = 5; j > 0; j--) {
                System.out.println("i " + i + " j "+ j);
                if (i == 5) {
                    break Outer;
                }
            }
        }
    }
}
/*
i 3 j 5
i 3 j 4
i 3 j 3
i 3 j 2
i 3 j 1
i 4 j 5
i 4 j 4
i 4 j 3
i 4 j 2
i 4 j 1
i 5 j 5
*/

이런식으로 for문에 Outer라는 라벨을 붙이고, 이를 break문에 사용하면 바깥쪽 for문까지 완벽하게 빠져나올 수 있다.


continue문

continue문과 break문의 차이점은 반복문 종료 여부이다.
continue문은 반복문을 종료하지 않고 다음 차례로 넘어가 계속 반복을 수행한다.
break문과 continue문은 보통 if문과 함께 사용한다.

public class Main {
    public static void main(String[] args) throws Exception {
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) { //나머지가 0일 경우는
                continue; //다음 반복으로 넘어간다.
            }
            System.out.println(i); //홀수만 출력
        }
    }
}
/*
1,3,5,7,9
*/
profile
프로젝트, 오류, CS 공부, 코테 등을 꾸준히 기록하는 저만의 기술 블로그입니다!

0개의 댓글