Link Search Menu Expand Document

Page last modified: Dec 12 2020

목표

자바가 제공하는 제어문 학습하기

Table of contents

if/else statement

expression의 결과값이 true이면 if문을 실행, false이면 else문을 실행 (else문이 없으면 skip)

Syntax
if (expression) {
    statement
}

if (expression) {
    statement
} else {
    statement
}
// e.g.
int age = 20;
if (age < 19) {
    System.out.println("You are not an adult.");
} else {
    System.out.println("You are not adult.");
}

else if

조건이 추가로 필요한 경우 사용

// e.g.
if (word.equals("a")) {
    System.out.println("It's an apple");
} else if (word.equals("b")) {
    System.out.println("It's a banana");
} else if (word.equals("c")) {
    System.out.println("It's a carrot");
} else {
    System.out.println("There are no corresponding results");
}

nested if/else statement

if와 else의 짝을 block{}으로 명시하지 않는다면, else는 가까이에 있는 if와 짝이 된다

if(num > 0)
    if(num == 1)
        System.out.println("just one");
else
    System.out.println("more than one");    // if(num == 1)와 짝, indentation 상관 X

switch statement

  • if/else문과 비슷하나, 하나의 변수에 의해 처리가 나누어진다
  • 해당하는 case가 없으면 default 실행
  • case 끝에 break문이 없으면 인터프리터는 switch문이 끝났다고 인식하지 않기 때문에
    이후에 매칭되는 case가 있는지 확인한다

switch문에서 비교가능한 타입

  • byte, Byte
  • short, Short
  • int, Integer
  • char, Character
  • enum
  • String

* null값이면 NullPointerException 발생

// e.g.
String word = "p";
switch (word) {
    case "a":
        System.out.println("It's an apple");
        break;
    case b":
        System.out.println("It's a banana");
        break;
    case "c":
        System.out.println("It's a carrot");
        break;
    default:
        System.out.println("There are no corresponding results");
}

참고 https://www.baeldung.com/java-switch


while statement

반복적 동작을 가능하게 한다

Syntax
while (expression) {
    statement
}
  • expression의 결과값이 true이면 statement를 실행, false이면 skip
  • statement 실행 후 expression 재판단
    ∴ 무한루프에 빠지지 않도록 주의해야 함!
// e.g.
int count = 0;
while (count < 10) {
    System.out.println(count + 1);
    count++;
}

do statement

Syntax
do {
    statement
} while (expression);
  • 최초 한번은 statement 무조건 실행
  • 1회 실행 후 expression의 결과값이 true이면 statement를 다시 실행, false이면 skip
  • while (expression);에서 끝에 ;이 붙는다
// e.g.
int count = 0;
do {
    System.out.println(count + 1);
    count++;
} while (count < 10);

for statement

반복에 사용되는 변수의 초기화, 조건, 갱신에 대해 정의할 수 있다

Syntax
for(initialize; expression; update) {
    statement
}
  • 최초 실행) initializetest 결과가 true (false면 exit) → statementupdate
  • 2회 이상) test 결과가 true (false면 exit) → statementupdate
// e.g.
for(int i = 0; i < 10; i++) {
    System.out.println(i + 1);
}

foreach statement

객체의 collection을 반복할 때 사용 (객체가 null이 안 되도록 조심!)

Syntax
for( declaration : expression ) {
    statement
}

특징

  • 인덱스 사용 불가 (즉, statement안에 들어온 요소가 몇 번째 요소인지 알 수 없다)
  • collection의 끝에서부터 거꾸로 반복 불가
int[] primes = new int[] {2,3,5,7,11,13,17,19,23,29};
for(int n : primes)
    System.out.println(n);

참고 Java in a Nutshell 7th edition


과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.

  • 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
  • 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
  • Github 자바 라이브러리를 사용하면 편리합니다.
  • 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.

해결 과정

  1. IntelliJ에서 Maven Project 생성
  2. pom.xml 파일에 Github 자바 라이브러리 추가
  3. 라이브러리 도큐먼트 참고하여 코드작성
    • 이슈 1번 ~ 18번까지 커멘트를 단 사용자 아이디와 그 수를 취득
      • 1주차 ~ 18주차까지 참여정보를 담는 WeekInfo 클래스 생성
    • 마크다운 표 형식에 맞게 출력 ( = dashboard 출력)
  4. 깃헙 저장소에 이슈 만들고 동작 테스트

결과물

깃허브 저장소 보기

참여자1주차
193/224
(86.16%)
2주차
155/224
(69.20%)
3주차
148/224
(66.07%)
4주차
104/224
(46.43%)
5주차
0/224
(0.00%)
6주차
0/224
(0.00%)
7주차
0/224
(0.00%)
8주차
0/224
(0.00%)
9주차
0/224
(0.00%)
10주차
0/224
(0.00%)
11주차
0/224
(0.00%)
12주차
0/224
(0.00%)
13주차
0/224
(0.00%)
14주차
0/224
(0.00%)
15주차
0/224
(0.00%)
16주차
0/224
(0.00%)
17주차
0/224
(0.00%)
18주차
0/224
(0.00%)
참석율
0417taehyun               16.67%
1031nice              22.22%
2yeseul                11.11%
372dev               16.67%
9m1i9n1               16.67%
Ahnyezi                 5.56%

~ 이후 생략 ~