JAVA/개념

[JAVA] 03. 조건문, 반복문 (Control Statement)

밍글링글링 2017. 7. 30.
728x90

1.1 조건문 - if, switch

- 조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성

- Java에서 조건문은 if문과 switch문 두 가지뿐이다.

- if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려한다.

- 모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없는 경우가 많다.

if(num==1) {
    System.out.println("SK");
}else if(num==6) {
    System.out.println("KTF");
}else if(num==9) {
    System.out.println("LG");
}else{
    System.out.println("UNKNOWN");
}

(=)

switch(num) {
    case 1:
        System.out.println("SK");
        break;
    case 6:
        System.out.println("KTF");
        break;
    case  9:
        System.out.println("LG");
        break;
    default:
        System.out.println("UNKNOWN");
}

 

1.2 if문

- if문은 if, if-else, if-else if의 세가지 형태가 있다.

- 조건식의 결과는 반드시 true 또는 false이어야 한다.

if(조건식) {
    // 조건식의 결과가 true일 때 수행될 문장들
}
if(조건식 {
    // 조건식의 결과가 true일 때 수행될 문장들
}else{
    // 조건식의 결과가 false일 때 수행될 문장들
}
if(조건식1){
    //조건식1의 결과가 true일 때 수행될 문장들
}else if(조건식2) {
    //조건식2의 결과가 true일 때 수행될 문장들
    //(조건식1의 결과는 false)
}else if(조건식3){
    //조건식3의 결과가 true일 때 수행될 문장들
    //(조건식1과 조건식2의 결과는 false)
}else{
    //모든 조건식의 결과가 false일 때 수행될 문장들
}​


1.2 if문 - 조건식의 예(ex)

int i =0;

if(i%2==0) { }

if(i%3==0) {}



String str = "";

char ch = '';

if(ch=='' || ch=='\t') { }

if(ch=='c' || str=='C') { }

if(str="c" || str=="C") { }

if(str.equals("c") || str.equals("C")) { }

if(str.equalsIgnoreCase("c")) { }



if(ch>='0' && ch<='9') { }

if(ch>='0' && ch<='9')

if(ch<'0' || ch>'9') { }



if('a'<=ch && ch<='z')||

('A'<=ch && ch<='Z' { }



if(i<-1 || i>3 && i<5) { }



str ="3"; 문자열 "3" → 문자 '3'
if(str!=null && !str.equals("")){
    ch = str.charAt(0);
}
boolean powerOn=false;
if(!powerOn){
    //전원이 꺼져있으면...
}

 

1.3 중첩 if문

- if문 안에 또 다른 if문을 중첩해서 넣을 수 있다.

if (score >= 90) {    //scorerk 90점보다 같거나 크면 A학점
    grade = "A";
    
    if(score >= 98) {    //90점 이상 중에서도 98점 이상은 A+
        grade += "+";    //grade = grade + "+";
    } else if(score < 94){
        grade +="-";
}

 

1.4 switch문

- 조건식의 계산결과와 일치하는 case문으로 이동 후 break문을 만날 때까지 문장들을 수행한다. (break문이 없으면 switch문의 끝까지 진행된다.)

- 일치하는 case문의 값이 없는 경우 default문으로 이동한다. (default문 생략가능)

- case문의 값으로 변수를 사용할 수 없다.(리터럴, 상수만 가능)

 

1.4 switch문 - 사용 예(example)

switch(score/10) {
    case 10:
    case 9:
        grade = 'A';
        break;
    case 8:
        grade = 'B';
        break;
    case 7:
        grade='C';
        break;
    case 6:
        grade='D';
        break;
    default:
        grade='F';
}
 

 

1.5 중첩 switch문

- switch문 안에 또 다른 switch문을 중첩해서 넣을 수 있다.

switch(num) {
    case 1:
    case 7:
        System.out.println("SK");
        switch(num){
            case 1:
                System.out.println("1");
                break;
            case 7:
                System.out.println("7");            
                break;
        }
        break;l
    case 6:
        System.out.println("KTF");
        break;
    case 9:
        System.out.println("LG");
        break;
    default:
        System.out.println("UNKNOWN");
}
 

 

1.6 if문과 switch문의 비교

- if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려한다.

- 모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없다.

- if문 보다 switch문이 더 간결하고 효율적이다.

 

1.7 Math.random()

- Math 클래스에 정의된 난수 발생함수

- 0.0이상 1.0미만의 double값을 반환한다.(0.0 <=Math.random() <1.0)

//예) 1~10범위의 임의의 정수를 얻는 식 만들기
//1. 각 변에 10을 곱한다.
0.0*10<=Math.random()*10<1.0*10
0.0<=Math.random()*10<10.0
//2. 각 변을 int형으로 변환한다.
(int)0.0<=(int)(Math.random()*10)<(int)10.0
0<=(int)(Math.random()*10)<10
//3. 각 변에 1을 더한다.
0+1<=(int)(Math.random()*10)+1<10+1
1<=(int)(Math.random()*10)+1<11

int score = (int) (Math.random()*10)+1;
 
 

2.1 반복문 - for, while, do while

- 문장 또는 문장들을 반복해서 수행할 때 사용- 조건식과 수행할 블럭{} 또는 문장으로 구성- 반복회수가 중요한 경우에 for문을 그 외에는 while문을 사용한다.- do-while문은 while문의 변형으로 블럭{}이 최소한 한번은 수행될 것을 보장한다.

2.2 for문

- 초기화, 조건식, 증감식 그리고 수행할 블럭{} 또는 문장으로 구성

2.2 for문 - 작성 예(example)

public static void main(String[] args){
    int sum = 0;
    int i;

    for(i=1; i<=10; i++){
        sum += i; //sum = sum+i;
    }

    System.out.println(i=1+"까지의 합: "+sum);
}
 

 

2.3 중첩 for문

- for문 안에 또 다른 for문을 포함시킬 수 있다.

for(int i=2; i<=9; i++){
    for(int j=1; j<=9; j++){
        System.out.println(i+" * "+j+" = "+i*j);
    }
}
-------------------------------------------------------------------------

for(int i=2; i<=9; i++)
    for(int j=1; j<=9; j++)
        System.out.println(i+" * "+j+" = "+i*j);

-------------------------------------------------------------------------
for(int i=2; i<=9; i++){
    for(int j=1; j<=9; j++){
        for(int k==1; k<=3; k++)
        System.out.println(i+" * "+j+" = "+i*j+"k="+k);
    }
}
 

 

2.4 while문

- 조건식과 수행할 블럭{} 또는 문장으로 구성

while(조건식) {
    //조건식의 연산결과가 true일 때 수행할 문장들을 적는다.
}
int i=10;

while(i >= 0){
    System.out.println(i--);
}
 

 

2.5 중첩 while문

- while문 안에 또 다른 while문을 포함시킬 수 있다.

int i=2;
while(i <=  9){
    int j=1;
    while(j<=9){
        System.out.println(i+" * "+j+ " = "+i*j);
        j++;
    }
    i++;
}
 

 

2.6 do-while문

- while문의 변형, 블럭{}을 먼저 수행한 다음에 조건식을 계산한다.

- 블럭{}이 최소한 1번 이상 수행될 것을 보장한다.

do {
    //조건식의 연산결과가 true일 때 수행될 문장들을 적는다.
} while(조건식);
class FlowEx24{
    public static void main(String[] args) throws java.io.IOException{
        int input=0;

        System.out.println("문장을 입력하세요.");
        System.out.println("입력을 마치려면 x를 입력하세요.");
        do{
            input = System.in.read();
            System.out.println((char)input);
            }while(input!=-1 && input != 'x');
    }
}
 

 

2.7 break문

- 자신이 포함된 하나의 loop문 또는 switch문을 빠져 나온다.

- 주로 if문과 함께 사용해서 특정 조건을 만족하면 반복문을 벗어나게 한다.

class FlowEx25{
    public static void main(String[] args){
        int sum=0;
        int i=0;

        while(true){
            if(sum>100)
                break;    
            i++;
            sum += i;
        } // end of while
        System.out.println("i="+i);
        System.out.println("sum="+sum);
    }
}
 

728x90

'JAVA > 개념' 카테고리의 다른 글

[JAVA] 06. OOP2(객체 지향 언어)  (0) 2017.08.01
[JAVA] 05. OOP 1(객체 지향 언어)  (0) 2017.08.01
[JAVA] 04. Array (배열)  (0) 2017.07.31
[JAVA] 02. 연산자(Operator)  (0) 2017.07.28
[JAVA] 01. 변수(Variable)  (1) 2017.07.28

댓글