김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩
  • 프론트앤드
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • HTML공부
  • 백앤드
  • 자바공부
  • 풀스택
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • 코딩공부
  • http에러메세지
  • 객체지향프로그래밍
  • ErrorPage
  • 개발자
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 자바
  • httperror
  • 코딩공부 #자바공부
  • web.xml수정
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Java/: 독학으로 공부하기(과거)

[java] #3-1 조건문 : 제어 흐름 이해하기

2022. 7. 1. 18:20

1. 조건문

조건문이란 말 그대로 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍을 하는 것이다.
이 조건문의 가장 단순한 형식은 if문과 if-else문이 있다.

1) if문
if를 우리말로 해석하면 '만약 ~이라면'이다.
if문을 사용하는 형태를 간단히 나타내면 아래와 같다.

int age = 10;
if (age >= 8) {
System.out.println("학교에 다닙니다");
}


위에서 if문 뒤에 붙는 조건식이 참일 경우에는 중괄호 안에 있는 문장을 수행하게 된다.

2) if-else문
그런데 조건을 만족하지 않는 경우에도 값을 출력하고 싶다면 else문을 뒤에 붙인다.
이 else문은 if문의 조건식이 거짓일 경우를 출력하기 때문에 따로 조건식을 붙이지 않는다.

int age = 10;
if (age >= 8) {
System.out.println("학교에 다닙니다");
}
else {
System.out.println("학교에 다니지 않습니다")
}


위의 문을 활용하여 아래의 예재를 만들어보았다.

package ifexample;

public class IfExample1 {
public static void main(String[] args) {
char gender = 'F';
if (gender == 'F') {
System.out.println("여성입니다");
}
else {
System.out.println("남성입니다");
}
}
}

// '여성입니다'의 값이 출력


3) if-else if-else문
지금까지는 어떤 상황에서 하나의 조건을 만족하는 경우와 그렇지 않은 경우를 살펴보았다.
그런데 하나의 상황에 조건이 여러 개인 경우는 if-else if-else문으로 표현할 수 있다.
예를 들어 놀이 공원 입장료를 계산할 때 8세 미만은 1,000원, 14세 미만은 2,000원, 20살 미만은 2,500원, 그 이상은 3,000원이라는 조건이 있을 때 이렇게 표현할 수 있는 것이다.

이 때 조건식은 나이와 가격을 선언한 뒤 나이가 8세 미만인지, 14세 미만인지, 20세 미만인지를 구분하고 모든 조건식에서 거짓이 나오면 3,000원을 부과하면 된다.
if-else if-else문에서는 하나의 조건을 만족하면 이후 조건은 비교하지 않는다.

아래의 예제를 살펴보자.

package ifexample;

public class IfExample2 {
public static void main(String[] args) {
int age = 9;
int charge;

if(age < 8) {
charge = 1000;
System.out.println("취학 전 아동입니다.");
}
else if(age < 14) {
charge = 2000;
System.out.println("초등학생입니다.");
}
else if(age < 20) {
charge = 2500;
System.out.println("중고등학생입니다.");
}
else {
charge = 3000;
System.out.print("성인입니다.");
}
System.out.println("입장료는" + charge + "원입니다.");
}
}


그런데 만약 if문만 사용해서도 코드를 만들 수 있지 않을까?

package ifexample;

public class IfExample2 {
public static void main(String[] args) {
int age = 9;
int charge;

if(age < 8) {
charge = 1000;
System.out.println("취학 전 아동입니다.");
}
if(age < 14) {
charge = 2000;
System.out.println("초등학생입니다.");
}
if(age < 20) {
charge = 2500;
System.out.println("중고등학생입니다.");
}
else {
charge = 3000;
System.out.print("성인입니다.");
}
System.out.println("입장료는" + charge + "원입니다.");
}
}


이렇게 프로그램을 실행하면 결과가 이상하게 나온다. 왜냐하면 else문에서 값이 조건문에 해당하면 이후 조건문은 확인하지 않지만 if문만 사용한 이 코드에서는 모든 조건문에 값이 대입하는 지 확인하기 때문에 14세미만과 20세미만 모두의 결과 값을 도출한다.
그렇기에 성별과 같이 개별 조건을 비교할 때는 if문을 따로 사용해야하지만 동일 조건으로 구분하는 때에는 if-else if문을 사용해야한다.

** 나 혼자 코딩 연습 : 성적에 따라 학점 부여하기
> 성적에 따라 학점을 부여하는 프로그램을 만들어보세요.
> 100~90점은 A, 89~80점은 B, 79~70점은 C, 69~60점은 D, 나머지는 F이다.

package ifexample;

public class IfExample3 {
public static void main(String[] args) {
int score = 60;
char grade;

if(score > 89) {
grade = 'A';
System.out.println(score);
}
else if(score > 79) {
grade = 'B';
System.out.println(score);
}
else if(score > 69) {
grade = 'C';
System.out.println(score);
}
else if(score > 59) {
grade = 'D';
System.out.println(score);
}
else {
grade = 'F';
System.out.println(score);
}
System.out.println("귀하의 2022년도 1학기 성적은 "+ grade +" 학점입니다.");
}
}

// 교수님이 재수강도 못하게 60점을 주셨다.. 악..마...


2. 조건문과 조건 연산자

if-else문은 조건 연산자로도 구현할 수 있다.
아무래도 if-else문으로 구현한 코드가 가독성이 더 좋지만 간단한 조건문이고 선택이 두 가지만 있는 경우에는 종종 조건 연산자도 사용한다.

예시, grade = (score >= 90) ? A : B;


3. switch-case문

조건문을 구현할 때 if문을 사용하면 번거로운 경우가 있다.
예를 들어 경기에 참가한 선수의 순위에 따라 메달 색을 정하는 프로그램을 생각해보자.이 때 조건은 선수의 순위가 된다.

switch-case문의 장점은 코드가 깔끔하고 가독성이 좋다는 것이다.그리고 여러 문장이 있어도 {}를 여러 번 사용하지 않고 ~break;로 조건을 구분한다.
break문은 switch-case문의 수행을 멈추고 빠져나가도록 만든다.

if-else if-else문의 마지막 else문이 switch-case문에서는 default문과 같은 역할을 한다.하지만 default문은 생략할 수도 있다.

그러나 switch-case문은 조건이 복잡한 식으로 이루어진다면 사용하기 부적절하다.등수처럼 대상을 하나의 값으로 조건을 비교할 수 있을 때 사용하게 된다.아래의 예제를 함께 봐보자.

package ifexample;

public class SwitchCase {
public static void main(String[] args) {
int ranking = 1;
char medalColor;

switch(ranking) {
case 1 : medalColor = 'G';
break;
case 2 : medalColor = 'S';
break;
case 3 : medalColor = 'B';
break;
default : medalColor = 'A';
}
System.out.println(ranking + "등 메달의 색깔은 " + medalColor + " 입니다.");
}
}


* case문 동시에 사용하기
case문은 여러 경우를 동시에 처리할 때도 자주 사용한다.
각 달의 날짜를 출력하는 예제를 생각해보자.

1,3,5,7,8,10,12월은 31일.
4,6,9,11월은 30일.
2월은 편의상 28일까지로 한다.

그러면 아래와 같이 case문을 쓸 것이다.

case 1 : day = 31;
break;
case 2 : day = 28;
break;
case 3 : day = 31;
break;
case 4 : day = 30;
break;
case 5 : day = 31;
break;
...
case 12 : day = 31;
break;


그런데 코드를 유심히 살펴보면 case는 달라도 수행문이 같은 경우가 반복이 된다.
이럴 경우에는 case문을 동시에 사용할 수 있다.

case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : day = 31;
break;
case 4 : case 6 : case 9 : case 11 : day = 30;
break;
case 2 : day = 28;
break;


** switch-case문에서 break문의 역할
만약 break문을 쓰지 않고 프로그램을 실행하면 결과값이 어떻게 될까?
case 1의 조건식에 결과값이 포함되더라도 break문이 없기 때문에 마지막까지 모두 수행이 되어서 default의 값이 출력되게 된다.
즉 break문을 사용해서 각 조건을 만족시킬 때 이후 조건문은 수행하지 않도록 해주어야 한다.


*** case문에 문자열 사용하기
자바 7부터는 switch-case문의 case 값에 정수 값뿐 아니라 문자열도 사용할 수 있다.
꼭 case 1,2,3,4,5라는 정수만 사용하여야 하는 것이 아니라 'Gold'라는 문자를 사용하여도 가능하다는 뜻이다.

저작자표시 비영리 동일조건 (새창열림)

'⁂ Java > : 독학으로 공부하기(과거)' 카테고리의 다른 글

[java] #4-1 객체, 클래스, 패키지  (0) 2022.07.04
[java] #3-2 반복문 : 제어 흐름 이해하기  (0) 2022.07.03
[java] #2-2 비트 연산자  (0) 2022.07.01
[java] #2-1 자바의 기본 연산자  (0) 2022.06.30
[java] #1-3 상수와 리터럴  (0) 2022.06.30
    '⁂ Java/: 독학으로 공부하기(과거)' 카테고리의 다른 글
    • [java] #4-1 객체, 클래스, 패키지
    • [java] #3-2 반복문 : 제어 흐름 이해하기
    • [java] #2-2 비트 연산자
    • [java] #2-1 자바의 기본 연산자
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바