조건문

hovi·2023년 5월 30일
0

JAVA

목록 보기
8/36

제어문이란?

프로그램이 원하는 결과를 얻기 위해서는 프로그램의 순차적인 흐름을 제어해야만 할 경우가 생깁니다.

이때 사용하는 명령문을 제어문이라고 하며, 이러한 제어문에는 조건문, 반복문 등이 있습니다.

이러한 제어문에 속하는 명령문들은 중괄호({})로 둘러싸여 있으며, 이러한 중괄호 영역을 블록(block)이라고 합니다.

  • 순차 구조 : 명령이 순차적으로 수행되는 구조
  • 선택 구조 : 입력 받은 값에 따라 선택하여 실행되는 구조 (조건문)
  • 반복 구조 : 입력 값에 따라 반복되면 실행되는 구조 (반복문)

조건문

조건문은 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문입니다.

조건문 중에서도 가장 기본이 되는 명령문은 바로 if 문입니다.

자바에서 사용하는 대표적인 조건문의 형태는 다음과 같습니다.

1. if 문2. if / else 문3. if / else if / else 문4. switch 문

if ~ else 문

if 문은 조건식의 결과가 참(true)이면 주어진 명령문을 실행하며, 거짓(false)이면 아무것도 실행하지 않습니다.

if (조건식) {
    조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
이 부분은 조건식을 만족하거나 만족하거나 공통으로 수행 됩니다.
System.out.print("정수를 입력 하세요 : ");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt()
if (a >= 0) {
	System.out.println("양수 입니다.");
} else {
	System.out.println("음수 입니다.");
}

if ~ else if ~ else 문

if (조건식) {
	조건식이 참일 때 실행될 문장
} else if (조건식) {
	첫번째 조건식이 거짓이고 현재의 조건이 참인 경우 실행 될 문장
} else {
	조건식이 거짓일 때 실행 될 문장
} 

[예제1]

Scanner sc = new Scanner(System.in); // 키 입력 받기 위해 스캐너 객체 생성
  System.out.print("정수를 입력 하세요 : ");
  int number = sc.nextInt(); // 키보드 입력을 정수형 변수에 담음
  if(number > 100) {
      System.out.println(number + "는 100보다 커요");
  } else if(number < 100) {
      System.out.println(number + "는 100보다 작아요.");
  } else {
      System.out.println(number + "는 100과 같아요.");
  }

[예제2]

import java.util.Scanner;

public class condition {
    public static void main(String[] args) {
        System.out.print("문자를 입력 하세요 : ");
        Scanner sc = new Scanner(System.in);
        char ch = sc.next().charAt(0);
        if (ch >= 'a' && ch <= 'z') {
            System.out.println("알파벳 소문자 입니다.");
        } else if(ch >= 'A' && ch <= 'Z') {
            System.out.println("알파벳 대문자 입니다.");
        } else {
            System.out.println("알파벳이 아닙니다.");
        }
    }
}

switch문

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

  • if문에 비해 코드의 가독성을 높여주며 코드가 간결해 집니다.
  • if문과 달리 조건식을 넣을수가 없고 값만 올 수 있다는 부분에 유의 해야 합니다.
switch(변수) {
	case:
		실행문
		....
		break;  // switch문을 탈출 합니다.
	case:
		....
		break;
	default:
		나머지 조건에 해당
}

스위치문 기본

public class SwitchEx1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("계절을 입력 하세요 : ");
        String season = sc.next();
        switch(season) {
            case "spring" : // 해당 조건이 실행 됨
                System.out.println("꽃이 피는 봄이 왔어요^^");
                break; // 해당 조건을 종료
            case "summer" :
                System.out.println("무더운 여름 입니다.");
                break;
            case "fall":
            case "autumn" :
                System.out.println("쓸쓸한 가을 입니다.");
                break;
            case "winter":
                System.out.println("아직 겨울이네요ㅠㅠㅠㅠㅠㅠ");
                break;
            default :
                System.out.println("계절을 잘 못 입력 했습니다.");
        }
    }
}

계산기 만들기

public class Main {
    public static void main(String[] args) {
        int x, y;
        char op;
        Scanner sc = new Scanner(System.in);
        x = sc.nextInt();
        op = sc.next().charAt(0);
        y = sc.nextInt();
        switch(op) {
            case '+' :
                System.out.printf("SUM : %d\n", x + y);
                break;
            case '-' :
                System.out.printf("SUB : %d\n", x - y);
                break;
            case '*' :
                System.out.printf("MUL : %d\n", x * y);
                break;
            case '/' :
                System.out.printf("DIV : %d\n", x / y);
                break;
            default :
                System.out.println("조건식이 없습니다.");
        }
    }

[연습 문제1]

  • 시험 성적을 입력 받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지는 F를 출력하는 프로그램
  • 코드 보기
    public class ScoreEx1 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.print("성적을 입력 하세요 : ");
            int score = sc.nextInt();
            if(score >= 0 && score <= 100) {
                if(score >= 90) System.out.println("A");
                else if(score >= 80) System.out.println("B");
                else if(score >= 70) System.out.println("C");
                else if(score >= 60) System.out.println("D");
                else System.out.println("F");
            } else {
                System.out.println("잘못 입력 하셨습니다.");
            }
        }
    }

[연습 문제 2]

  • 세자리의 정수를 입력 받아 가장 큰 수 출력
  • 코드 보기
    public class Main {
        public static void main(String[] args) {
           int num;
           int a, b, c;
           System.out.print("세자리 정수 입력 : ");
           Scanner sc = new Scanner(System.in);
           num = sc.nextInt();
           a = num / 100;
           b = (num % 100) / 10;
           c = num % 10;
    
           if (a > b) {
               System.out.println(Math.max(a, c));
           } else {
               System.out.println(Math.max(b,c));
           }
        }
    }
profile
풀스택 예비 개발자

0개의 댓글