조건문과 반복문

윤재열·2022년 1월 6일
0

Java

목록 보기
4/71

영어에서도 if,for를 많이 썻던 것으로 기억한다.
Java에서도 예외는 아니다..엄청 자주 나온다.

조건문 - if, switch

-조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성한다. if(조건식) {문장}
-Java에서 조건문은 if문, switch문 2가지다.
-if문을 주로 사용하며, 경우의 수가 많은경우 switch문을 사용한다.
-모든 switch문은 if문으로 변경이 가능하지만,if문은 switch문으로 변경 할 수 없는 경우가 많다.

if문

-if문은 if,if-else, if-else if 3가지가 형태가 있다.
-조건식의 결과는 무조건 true 또는 false가 나와야한다.

==================if형태==========================


//        if(조건식) {
//            //조건식의 결과가 true일 때 수행될 문장들
//        }
        int score =65;  //score값 초기화
        if(score > 60){
            System.out.println("합격입니다.");
        }
        if(score < 60){
            System.out.println("불합격입니다.");
        }
    }
}



==============if-else형태================


        if(조건식){
            //조건식의 결과가 true일 때 수행될 문장들
        }
        else{
            //조건식의 결과가 false일 때 수행될 문장들
        }
        if(score>60){
            System.out.println("합격입니다.");
        }
        else{
            System.out.println("불합격입니다.");
        }
    }
}

=============if-esle if형태================


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

        if(score>=90){
            System.out.println("A+");
        }
        else if(score>=80){
            System.out.println("A");
        }
        else if(score>=70){
            System.out.println("B");
        }
        else{
            System.out.println("F");
        }
    }
}

이것의 응용으로 중첩if문이 있습니다.

-if문 안에 또 다른 if문을 중첩해서 넣을 수 있다.
-if문의 중첩횟수에는 제한이 없다.

 if(조건식1){
        //조건식1의 연산결과가 true일 때 수행될 문장들
        if(조건식2){
            //조건식1과,2가 true일 때 수행될 문장들
        }
        else{
            //조건식1만 true고, 조건식2가 false일 때 수행될 문장들
        }
        
        if (score >= 90) {
            grade = "A";

            if (score >= 98) {
                grade += "+";		//grade = grade + "+";
            } else if (score < 94) {
                grade += "-";
            }
        }else if (score >= 80) {
                grade = "B";
                if (score >= 88) {
                    grade += "+";
                } else if (score < 84) {
                    grade += "-";
                } 
                }else {
                    grade = "C";
                }

            }
            //이 코드는 만약 score가 90점 이상일때 98점이상이면 A+,93점이하면 A-;
            //	          score가 80점 이상일때 88점이상이면 B+,83점이하면 B-;

switch문

-if문의 조건식과 달리, 조건식의 계산결과가 int타입의 정수와 String 타입의 문자열만 가능
-조건식의 계산결과와 일치하는 case문으로 이동 후 break문을 만날 때 까지 문장들을 수행(만약break문이 없다면 switch문의 끝까지 진행한다.)
-일치하는 case문의 값이 없는 경우 if문의 else처럼 switch문에는 default문으로 이동한다.(default는 생략가능)
-case문의 값으로 변수를 사용할 수는 없다.(리터럴,상수,문자열 상수만 가능)
-주로 조건문에는 if문이 사용되지만,경우의 수가 많은 경우에 switch문을 사용하는 것이 효율을 높인다.

public class SwitchEx { 
    public static void main(String[] args) {
        int num=1;
        switch (조건식){
            case1 :
                //조건식의 결과가 값1과 같을 경우 수행될 문장들
                break;
            case2 : 
                //조건식의 결과가 값2와 같을 경우 수행될 문장들
                break;
            default:
                //조건식의 결과가 일치하는 case문이 없을 때 수행될 문장들
        }
        
        switch (num){
            case 1 : case 7 :
                System.out.println("SAMSUNG");
                break;
            case 6 : case 8 :
                System.out.println("LG");
                break;
            default :
                System.out.println("UNKNOWN");
                break;
        }
    }
}

이제 지금까지 배운 것들을 통해 응용해보자!

중첩 if문

-switch문 안에 또다른 switch문이나 if문을 중첩해서 넣을 수 있다.
-이것 또한 중첩횟수에는 제한이 없다.

public class SwitchEx {
    public static void main(String[] args) {
        int num=1;

        switch (num){
            case 1 : case 7 :
                System.out.println("SAMSUNG");
                switch(num){
                    case 1 :
                        System.out.println("A");
                        break;
                    case 7 :
                        System.out.println("B");
                        break;
                }
                break;
            case 6 : case 8 :
                System.out.println("LG");
                break;
            default :
                System.out.println("UNKNOWN");
                break;
        }
    }
}
//출력을 해보면 num값에 1을 넣었으니 SAMSUNG,A가 출력된다.

이제 반복문에 대해서 공부해보자.반복문중에 for은 뒤에 배울내용에서도 엄청 많이쓰니까 꼭 기억하도록하자.

반복문 for, while, do-while

-문장 또는 문장들을 반복해서 수행할때 사용
-조건식과 수행할 블럭{} 또는 문장으로 구성
-반복회수가 중요한 경우에 for문, 그 외에는 while문을 사용한다.
-조건식과 수행할 블럭{} 또는 문장으로 구성

for문

-초기화,조건식,증감식 그리고 수행할 블록{} 또는 문장으로 구성
for(초기화; 조건식; 증감식){
//조건식이 true일 때 수행될 문장들을 적는다.
}

(반복하려는 문장이 단 하나일 때는 중괄호{}를 생략할 수 있다.)

Ex)1부터 100까지 정수를 더하기

public int sum = 0;
for(int i=1; i<=100; i++){
sum += i;   //sum = sum + i;
}

1.초기화 > 2.조건식 > 3.수행될 문장 > 4.증감식 (여기서 다시 2.조건식으로 돌아가서 반복)

중첩for문

-for문 안에 또 다른 for문을 포함시킬 수 있다.
-이것 또한 중첩횟수에는 제한이 없다.

대표적으로 중첩for문의 예제에는 구구단이 있다.

public class Gugudan {
    public static void main(String[] args) {
        int dan;
        int times;


        for(dan=2; dan<10; dan++){
            for(times=1; times<10; times++){
                System.out.println(dan + "X" + times + "=" + dan*times);
            }
            System.out.println();
        }

    }
}

while문

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

while(조건식) {
		//조건식의 연산결과가 true일 때 수행될 문장들
        }
int i =0;

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

중첩while문

-while문 안에 또 다른 while문을 포함시킬 수 있다.
-중첩횟수에 제한이 없다.

위의 for문에서 했던 구구단을 while로 변경해보자.

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

do-while문

-while문의 변형. 블럭{}먼저 수행한 후 조건식을 계산한다.
-블럭{}이 최소한 1번 이상 수핼될 것을 보장한다.

do{
	//조건식의 연산결과가 true일 때 수행될 문장들
 }
 while(조건식);
 public class t { 
 public static void main(String[] args) { 
 	int num = 6;			//num변수에 6을 할당한다.
 	do { 
    		System.out.println(num) //do안에있는 코드로 인해 num변수 6이 출력되고값이 1증가
	 	num++;  
 } 
 while (num <= 5); //while조건식에 false가 되므로 do while반복문이 종료되며 "Hello do-while"출력
 System.out.println("Hello do-while"); 
 }
 }

break문

-자신이 포함된 하나의 반복문 또는 switch문을 빠져 나온다.
-주로 if문과 함께 사용하여 특정 조건을 만족하면 반복문을 빠져나온다.

숫자 1부터 더해서 합이 100이넘으면 반복을 종료하고 빠져나오자.

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

        for(num=1; sum < 100; num++){
            sum += num;
            if(sum>=100)
           break;
        }
        System.out.println(num);
        System.out.println(sum);
    }
}

continue문

-자신이 포함된 반복문의 끝으로 이동한다.(다음 반복으로 넘어간다.)
-continue문 이후의 문장들은 수행되지 않는다.
-break문과 달리 반복문 전체를 벗어나지 않는다.

1부터 100까지의 홀수의 합을 구해보자.

public class Continueex {
    public static void main(String[] args) {
        int total =0;
        int num;

        for(num =1; num <=100; num ++){
            if(num % 2 == 0) //num%2==0 는 짝수를 의미한다,홀수는num%3==0
                continue;
                total += num;
             *}  //*<-continue문이 수행되면 반복문의 끝으로 이동한다.
            System.out.println("1부터 100까지의 홀수의 합은 " +total + "입니다.");
       }   
    }

이름 붙은 반복문과 break, continue

-반복문(for,while)앞에 이름을 붙이고, 그이름을 break,continue와 같이 사용함으로써
둘 이상의 반복문을 벗어나거나 반복을 건너뛰는 것이 가능하다.

public class NameBreak {
    public static void main(String[] args) {
        Lab : for(int i =2; i <= 9; i++){
            for(int j =1; j<= 9; j++){
                if(j==5)
                    break Lab;
                System.out.println(i + "*" + j + "=" + i*j);
            }
            System.out.println();
        }*   //* <-Lab이름이 붙은 반복문을 벗어난다.
    }
}
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글