1. 제어문(Control Flow Statements)

  • 조건문(a conditional statement)과 반복문(a repeating sentence)을 합해서 제어문이라 한다
  • 일반적인 코드의 흐름은 위에서 아래로 향하지만, 제어문을 사용하면 개발자가 원하는 방향으로 변경할 수 있다

2. 조건문(a conditional statement)

  • 조건문은 특정 조건에 부합하는 경우에 특정 코드의 실행 여부를 결정할 수 있다

 1) if문

  • 아래와 같은 형식으로 사용할 수 있다
  • 중괄호 { }를 사용하여 여러 문장을 하나로 묶을 수 있으며 '블록(block)'이라고 한다
더보기

if (조건식) { 실행 블록 };   //만약에 조건식이 true이면 실행블럭을 진행한다

 2) if ~else문

  • 조건식이 false일 경우에 조건문이나 실행블록을 추가하여 코드의 실행여부를 결정한다
  • else는 생략할 수 있다 
더보기

if(조건식1){실행블록1};                  //조건식1이 true이면 실행블록을 진행한다

      else if(조건식2){실행블록2};    //조건식1이 false이면 조건식2의 조건식을 검토하고 조건식2가 true이면 실행블록2를 진행한다

      else{실행블록3};                      //조건식1과 조건식2가 모두 false이면 실행블록3을 진행한다

import java.util.*;

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

        Scanner scanner = new Scanner(System.in);
        //int num = scanner.nextInt();
        String input = scanner.nextLine();
        //System.out.println(num);

        System.out.println("입력한 숫자는?");
        if (input.equals("1")) { 
            System.out.println("1번");
        } else if (input.equals("2")) {
            System.out.println("2번");
        } else if (input.equals("3")) {
            System.out.println("3번");
        } else if (input.equals("4")) {
            System.out.println("4번");
        } else if (input.equals("5")) {
            System.out.println("5번");
        } else if (input.equals("6")) {
            System.out.println("6번");
        } else {
            System.out.println("없는 숫자! " + input);
        }

    }
}

result
5  //입력 후 enter
입력한 숫자는?
5번

 3) switch문

  • if문은 조건식에 의해 실행블록이 결정되어 출력된다
  • switch문은 입력값에 따라 실행블록이 결정되어 출력된다
  • break 명령어로 true일 경우 실행블록을 탈출한다
  • defualt는 생략 가능하다
더보기

switch ( 입력변수 ) {              //switch문에서 입력받을 변수를 지정해 준다

        case "입력값" :              //입력변수 값과 대조할 값을 넣어준다

                 실행블록1 ;           //입력변수와 입력값이 일치했을 경우에 실행블록1을 진행한다

        break ;                           //입력변수 값과 입력값이 일치할 경우 실행블록1을 진행하고 멈춘다

        default:                          //입력변수 값과 입력값이 불일치 할 경우 실행블록2을 진행한다

                 실행블록2 ;

        break ;

import java.util.*;

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

        Scanner scanner = new Scanner(System.in);
        //int num = scanner.nextInt();
        String input = scanner.nextLine();
        //System.out.println(num);

        System.out.println("입력한 숫자는?");
        switch (input) {
            case "1":
                System.out.println("1번");
                break;
            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;
            default:
                System.out.println(input + " 번은 해당이 없는 숫자입니다");
                break;
        }
    }
}

result
6  //입력 후 enter
입력한 숫자는?
6 번은 해당이 없는 숫자입니다
  • 타입에 따라 문자열 입력도 가능하다
import java.util.*;

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

        Scanner scanner = new Scanner(System.in);
        //int num = scanner.nextInt();
        String input = scanner.nextLine();
        //System.out.println(num);

        System.out.println("입력한 사람은");
        switch (input) {
            case "kim":
                System.out.println("대한민국 국적입니다");
                break;
            case "smith":
                System.out.println("미국 국적입니다");
                break;
            case "jonadan":
                System.out.println("가나 국적입니다");
                break;
            default:
                System.out.println(input + " 번은 해당이 없는 숫자입니다");
                break;
        }
    }
}

result
smith
입력한 사람은
미국 국적입니다
  • JDK 14 이상 부터는 아래와 같은 형식으로 사용할 수 있다
import java.util.*;

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

        Scanner scanner = new Scanner(System.in);
        //int num = scanner.nextInt();
        String[] inputList = {"kim", "smith", "jonadan"};
        String input = scanner.nextLine();
        //System.out.println(num);

        System.out.println("입력한 사람은");
        switch (input) {
            case "kim" -> System.out.println("대한민국 국적입니다");
            case "smith", "jonadan" -> System.out.println("미국 또는 가나 국적입니다");

            default -> System.out.println(input + " 번은 해당이 없는 숫자입니다");
        }
    }
}

// : 대신 -> 의 사용으로 break 생략
// , 를 사용하여 여러 조건을 한번에 처리할 수 있다

 

3. 반복문(a repeating sentence)

  • 코드들이 반복적으로 실행되도록 하는 경우에 사용한다

 1) for문

  • for문은 조건식이 참(true)인 경우에 주어진 횟수만큼 실행문을 반복적으로 진행한다
  • 더보기
    sum = 0 ;
    for (초기화 , 조건식, 증감식  ) { 실행블록 ; }
    for (int i = 0, i < 10  , i++        ) { sum = sum + i ; } 
  • 변수 i는 임의의 변수명이므로 변경하여 사용해도 된다
  • 통상적으로 i 는 iterator(반복계수)를 의미하여 많이 사용한다
  • for문은 반복적으로 사용해야 할 조건을 조건식을 사용하여 단축시켜주므로 코드를 줄일 수 있다
  • 더보기
    ▷ 초기화 : for문을 시작할 때 한 번만 실행되며, 사용할 변수의 초기값을 지정해 준다
    조건식 : 반복 여부를 결정하는 조건으로 값이 true면 실행블록을 진행하고, false면 실행블록을 진행하지 않고 for문을 끝낸다
    증감식 : for문에서 지정한 변수의 값을 증감시켜 반복 횟수를 결정한다 (++ : 값을 1씩 증가시킨다)

public class Ffile {
    public static void main(String[] args) {
            int s=0;
            for(int i=0; i < 10; i++){
                s = s + i;
            }
        System.out.println(s);
    }
}

result
45
  • for문의 초기화 식은 생략 가능할 경우 생략할 수 있다
  • for문은 둘 이상의 초기화식과 조건식, 증감식을 사용할 수 있다
public class Ffile {
    public static void main(String[] args) {
            int s = 0;
            int s1 = 0;
            for(int i=0, j=100; i < 10 && j<200; i++, j++){
                s = s + i;
                s1= s1 + j;
            }
        System.out.println(s);
        System.out.println(s1);
    }
}

result
45
1045

 

 2) enhanced for문(향상된 for문)

  • 타입에 따른 값을 배열로 지정하여 주었을 때 for문의 초기화 변수를 지정하고 ':'을 사용하여 참조변수를 가져온다
  • 참조변수의 값이 존재하면 반복하여 실행문을 진행한다
public class Ffile {
    public static void main(String[] args) {
            String[] s = {"kim", "kang", "lee", "choi"};
            for(String name : s){
                System.out.println("나의 성은 " + name + " 입니다");
            }
    }
}

result
나의 성은 kim 입니다
나의 성은 kang 입니다
나의 성은 lee 입니다
나의 성은 choi 입니다

 

 3) while문

  • while문은 정해진 횟수가 없이 계속 반복한다
  • for문과 while문은 초기화, 증감식의 위치만 다르고 상호대체하여 사용이 가능하다
  • 더보기
    초기화 ;
    while (조건식) { 실행블록 ; 증감식 ; }
  • 초기화, 증감식이 불필요한 경우에는 생략할 수 있다
public class Wfile {
    public static void main(String[] args) {
        int n = 0, s = 0;
        while(n <= 9){
            s = s + n; //s += n 으로 작성할 수 있다
            n++;
        }
        System.out.println(s);
    }
}

result
45

//n이 9보다 작거나 같을때까지 반복하여 연산을 수행한다
  • 조건식에 true를 넣으면 while문은 무한반복을 한다
  • true를 사용할 경우 if문이나 break를 사용하여 중단할 수 있다

 4) do-while문

  • do-while문은 조건식이 우선이 아니라 실행문을 우선 진행하고 조건식으로 넘어간다
  • 조건식이 true이면 반복하고 false이면 중단한다
  • 더보기
    do { 실행블록 }
    while(조건식);
import java.util.Scanner;

public class Dfile {
    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 사이의 정수를 입력하세요
9
더 작은 정수를 입력하세요
1과 10 사이의 정수를 입력하세요
5
더 작은 정수를 입력하세요
1과 10 사이의 정수를 입력하세요
3
더 큰 정수를 입력하세요
1과 10 사이의 정수를 입력하세요
4
4 정답입니다!

'JAVA' 카테고리의 다른 글

Java - 문자열 입력(Scanner, BufferReader)  (0) 2022.08.08
Java - 날짜(Date), 시간(Time)  (0) 2022.08.08
Java - 콘솔 입출력(I/O)  (0) 2022.06.02
Java - 연산자(Operator)  (0) 2022.06.02
자료구조 - 트리(Tree)  (0) 2022.05.30

+ Recent posts