제어문 - 반복문 LOOP

2022. 2. 23. 18:06·Programing/JAVA

제어문

  • 프로그램 실행순서를 제어하는 구문
  • 변수연산을 특정 조건에서만 처리하거나 특정 횟수만큼 처리

반복문

  • 무엇이 반복되는 지, 몇 번 반복되는지를 찾는 것이 중요
  • 조건식이 참(true)인 경우 실행블럭을 반복 처리
  • 조건식이 계속 참(true)이면 무한 반복 처리
  • 종류 : for, while, do~while

for 문

형식

for(초기화식; 조건식; 증감식) {
    // 조건식이 참인경우 실행블럭
}

기본 반복문

package chapter05;

public class ForEx {

    public static void main(String[] args) {

               // 반복 출력 오름차순 ASC :  1~ 10
        for (int i=1; i<11; i++) {
            System.out.println("i = "+i);
        }

               // 반복 출력 내림차순 DESC : 10~ 1
        for (int i=10; i>0; i--) {
            System.out.println("i = "+i);
        }

    }

}
package chapter05;

public class Gugu {

    public static void main(String[] args) {


        /*
         2단 
         2 * 1 = 2
         2 * 2 = 4
         2 * 3 = 6 
         ...
         2 * 9 = 18 
         */


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


    }

}
package chapter05;

public class ForEx2 {

    public static void main(String[] args) {

        int sum = 0;

               // 누적 합계
        for (int i=1; i<=100; i++) {
            sum += i;
        }

        System.out.println("합계 : "+sum);

    }

}
package chapter06;

public class ForEx {

    public static void main(String[] args) {

        // 반복 조건 출력 - 짝수만 출력
        for (int i=0; i<10; i++) {
            if(i % 2 == 0) {
                System.out.println("i = "+i);
            }
        }

    }
}

while

형식

while(조건식) {
     // 조건식이 참인경우 실행블럭
}

기본 반복문

package chapter05;

public class ForEx {

    public static void main(String[] args) {

        // 반복 출력
        for (int i=0; i<10; i++) {
            System.out.println("i = "+i);
        }

        int i = 0;
        while (i<10) {
            System.out.println("i = "+i);
            i++; // 생략시 무한 루프
        }

    }

}
package chapter05;

public class Gugu {

    public static void main(String[] args) {


        /*
         2단 
         2 * 1 = 2
         2 * 2 = 4
         2 * 3 = 6 
         ...
         2 * 9 = 18 
         */


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

        int i = 1;
        while (i<10) {
            System.out.println("2 * " + i + " = " + 2*i);
            i++; // 생략시 무한 루프
        }


    }

}
package chapter05;

public class ForEx2 {

    public static void main(String[] args) {

        int sum = 0;

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

        System.out.println("합계 : "+sum);

        int i = 1;
        while (i<=100) {
            sum += i;
            i++;
        }

        System.out.println("합계 : "+sum);

    }

}
package chapter05;

public class ForEx3 {

    public static void main(String[] args) {

        // 반복 조건 출력 - 짝수만 출력
        for (int i=0; i<10; i++) {
            if(i % 2 == 0) {
                System.out.println("i = "+i);
            }
        }

        int i = 0;
        while (i<10) {
            if(i % 2 == 0) {
                System.out.println("i = "+i);
            }
            i++;
        }

    }

}

do ~ while 문

  • 최소한 한번은 실행 블록 실행

형식

do {
// 최소한 한번은 실행 
} while(조건식);
package chapter05;

public class DoWhileEx {

    public static void main(String[] args) {

        int i = 10;

        do {
            System.out.println("i = "+i);
        }while (i < 10);

    }

}

중첩 반복문

  • 반복문 실행 불록 안에 반복문, 계속 중첩가능
package chapter05;

public class LoopTest1 {

    public static void main(String[] args) {


        /*
         *****
         *****
         *****
         *****
         *****
         */

        for(int i=1; i<6; i++) {
            for(int j=1; j<6; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }

}
package chapter05;

public class LoopTest2 {

    public static void main(String[] args) {


        /*
         11111
         22222
         33333
         44444
         55555
         */

        for(int i=1; i<6; i++) {
            for(int j=1; j<6; j++) {
                System.out.print(i);
            }
            System.out.println();
        }

    }

}
package chapter05;

public class Gugu2 {

    public static void main(String[] args) {

        for (int j=2; j<10; j++) {
            System.out.println("["+j+"단]");
            for (int i=1; i<10; i++) {
                System.out.println(j + " * " + i + " = " + j*i);
            }
        }

    }

}

break / continue

  • break : 반복문 중지하고 빠져 나옴, switch문이나 무한 반복문에는 필수
  • continue : for문에서는 증감식->조건식, while문에서는 조건식으로 이동
package chapter05;

public class BreakEx {

    public static void main(String[] args) {

        for (int i=0; i<10; i++) {
            if (i == 5) {
                break;
            }
            System.out.println(i);
        }

    }

}
package chapter05;

public class BreakEx2 {

    public static void main(String[] args) {
        // 중첩 반복문의 경우 안쪽 반복문만 중지됨
        for (int i=0; i<5; i++) {
            for (int j=0; j<5; j++) {
                if (j==3) {
                    break;
                }
                System.out.println("i="+i+", j="+j);
            }
        }

    }

}
package chapter05;

public class BreakEx3 {

    public static void main(String[] args) {
        // 중첩 반복문은 중지할 반복문의 이름을 주고 break
        target:for (int i=0; i<5; i++) {
            for (int j=0; j<5; j++) {
                if (j==3) {
                    break target;
                }
                System.out.println("i="+i+", j="+j);
            }
        }

    }

}
package chapter05;

public class ContinueEx {

    public static void main(String[] args) {

               // 5만 건너 띄고 다시 증감->조건 판별 후 진행
        for (int i=0; i<10; i++) {
            if (i == 5) {
                continue;
            }
            System.out.println(i);
        }

                // 홀수는 건너 띄고 다시 조건 판별 후 진행
        int i = 0;
        while (i<10) {

            if(i % 2 == 1) {
                i++;
                continue;
            }
            System.out.println(i);
            i++;

        }

    }

}

무한 반복

  • 특정 조건이 true 인경우 break 으로 중지
  • 보통 무한 반복은 while 문 사용

형식

// for
for(;;) {}

// while
while(true) {}

// do ~ while
do {} while(true)
package chapter05;

import java.util.Scanner;

public class LeapYearTest {

    public static void main(String[] args) {

        /* 윤년 맞추기
         * 
         * 윤년 판별 : 판별식 : 400으로 나눠떨어지거나 4로 나눠떨어지고 100으로는 나눠떨어지지 않을 때
         * 
         */

        while(true) {
            System.out.println("연도입력 > ");
            Scanner scan = new Scanner(System.in);
            String sYear = scan.next();
            int year = Integer.parseInt(sYear); // 문자열 => 정수
            boolean isLeap = false;
            isLeap = (year%4==0 && year % 100 != 0 || year % 400 == 0);
            if(isLeap){
                System.out.println(year + "년은 윤년입니다.");
            }
            else{
                System.out.println(year + "년은 윤년이 아닙니다.");
            }

            if(isLeap) {
                break;

            }

        }

    }

}

다양한 반복문 연습

홀,짝수의 합 연산하기

package chapter05;

public class LoopEx {
    /*
     * 1부터 100까지의 수 중 짝수와 홀수의 합을 각각 구하시오
     * 
     */

    public static void main(String[] args) {

        int evenSum = 0;
        int oddSum = 0;

        for(int i=1; i<=100; i++) {
            if(i % 2 == 0) {
                evenSum += i;
            }else {
                oddSum += i;
            }
        }

        System.out.println("evenSum = " + evenSum);
        System.out.println("oddSum = " + oddSum);
    }

}

배수 연산하기

class LoopEx {

    /*
     * 1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합
     * 
     * 
     */

    public static void main(String[] args) {
        int sum = 0;
        for(int i=1; i <=20; i++) {
            if(i%2!=0 && i%3!=0) //i 2 3 sum i . 가 또는 의 배수가 아닐 때만 에 를 더한다
            sum +=i;
        }
        System.out.println("sum="+sum);
    } // main
}

반복 연산하기

public class LoopEx {
    /**
     * 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10) 의 결과값은
     */
    public static void main(String[] args) {
        int sum = 0;
        int totalSum = 0;
        for(int i=1; i <=10; i++) {
            sum += i;
            totalSum += sum;
        }
        System.out.println("totalSum="+totalSum);
​
    }
}

숫자 출력하기

package chapter05;

public class LoopEx3 {
    /*
        1  2  3  4  5 
        6  7  8  9 10
        11 12 13 14 15
        16 17 18 19 20
        21 22 23 24 25
     *
     */

    public static void main(String[] args) {

        for(int i=1; i<26; i++) {
            String p = "";
            if(i<10) {
                p = i + "  ";
            }else {
                p = i + " ";
            }
            System.out.print(p);
            if(i%5==0) {
                System.out.println();
            }
        }
    }

}

별 출력하기

package chapter05;


public class LoopEx {
    /*

*
**
***
****
*****

     */

    public static void main(String[] args) {

        String s = "*";

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i+1; j++) {
                System.out.print(s);    
            }
            System.out.println();

        }
    }

}

주사위눈의 합 구하기

package chapter05;

public class LoopEx {
    /*
     * 두 개의 주사위를 던졌을 때 눈의 합이 6이 되는 모든 경우의 수
     * 
     */

    public static void main(String[] args) {

        for(int i=1;i<=6;i++) {
            for(int j=1;j<=6;j++) {
                if(i+j==6) {
                    System.out.printf("(%s, %s)", i,j);
                }
            }
        }
    }

}

                // A,B
        //(1,1) (1,2) (1,3) (1,4) (1,5), (1,6)
        //(2,1) (2,2) (2,3) (2,4) (2,5), (2,6)
        //(3,1) (3,2) (3,3) (3,4) (3,5), (3,6)
        //(4,1) (4,2) (4,3) (4,4) (4,5), (4,6)
        //(5,1) (5,2) (5,3) (5,4) (5,5), (5,6)
        //(6,1) (6,2) (6,3) (6,4) (6,5), (6,6)

2x+4y=10 방정식 풀기

package chapter05;

public class LoopEx {
    /*
     * 2x+4y=10 방정식의 해  x y, 범위 0<=x<=10, 0<=y<=10 
     * 
     */

    public static void main(String[] args) {

        for(int x=0; x <=10;x++) {
            for(int y=0; y <=10;y++) {
                if(2*x+4*y==10) {
                    System.out.println("x="+x+", y="+y);
                }
            }
        }
    }

}

난수 값 맞추기

package chapter05;

import java.util.Scanner;

public class LoopEx {
    /*
     * 난수 값 맞추기
     * 
     */

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int number = (int)(Math.random()*100)+1;
        int inNumber = 0;

        do{
            System.out.println("숫자를 입력하세요...");
            inNumber = scan.nextInt();

            if(inNumber == number){
                System.out.println("맞혔습니다.");
                break;
            }
            else if(inNumber < number){
                System.out.println("숫자가 너무 작아요.");
            }
            else {
                System.out.println("숫자가 너무 커요.");
            }
        }
        while(true);
    }

}

야구게임

  • 규칙 : 랜덤한 3자리 숫자 맞추기, 중복 숫자 불가
    • com : 135
    • user : 234 => 1Strike 2Out( 3이 숫자,자리수 모두 맞음)
    • user : 379 => 1Ball 2Out ( 3이 숫자만 맞음)
    • user : 678 => 3Out ( 맞음 없음)
    • user : 135 => 3Strike (모두 맞음, 게임 종료 )
package chapter05;

import java.util.Scanner;

public class BaseBallVar {

    public static void main(String[] args) {
        String s = "%sS %sB %sO %n";
        int com1 = 0;
        int com2 = 0;
        int com3 = 0;

        while(true) {
            com1 = (int)(Math.random() * 10);
            com2 = (int)(Math.random() * 10);
            com3 = (int)(Math.random() * 10);
            boolean b = (com1 == com2 || com1 == com3 || com2==com3);
            if(!b) {
                break;
            }
        }
        System.out.printf("%s%s%s%n",com1,com2,com3);

        // 중복체크 필요
        int user1 = 0;
        int user2 = 0;
        int user3 = 0;

        int count = 0;
        // 중복체크 필요
        Scanner scan = new Scanner(System.in);
        while(true) {
            count++;
            int strike = 0;
            int ball = 0;
            int out = 0;
            while(true) {
                user1 = scan.nextInt();
                user2 = scan.nextInt();
                user3 = scan.nextInt();
                boolean b = (user1 == user2 || user1 == user2 || user2==user3);
                if(!b) {
                    break;
                }
            }
            if(com1 == user1) {
                strike++;
            }else if(com1 == user2) {
                ball++;
            }else if(com1 == user3) {
                ball++;
            }

            if(com2 == user1) {
                ball++;
            }else if(com2 == user2) {
                strike++;
            }else if(com2 == user3) {
                ball++;
            }

            if(com3 == user1) {
                ball++;
            }else if(com3 == user2) {
                ball++;
            }else if(com3 == user3) {
                strike++;
            }

            out = 3 - (strike + ball);

            System.out.printf(s,strike,ball,out);


            if(strike == 3) {
                break;
            }
        }
        System.out.println("시도>>"+count+"번 빙고!!");


    }

}

깃 허브 주소 : https://github.com/bjw5035/Academy_Study

'Programing > JAVA' 카테고리의 다른 글

배열 ARRAY  (2) 2022.02.28
함수 - 메서드 FUNCTION  (0) 2022.02.24
제어문 - 조건문 CONDITIONAL  (1) 2022.02.21
연산  (0) 2022.02.21
변수  (0) 2022.02.21
'Programing/JAVA' 카테고리의 다른 글
  • 배열 ARRAY
  • 함수 - 메서드 FUNCTION
  • 제어문 - 조건문 CONDITIONAL
  • 연산
쿠크
쿠크
  • 쿠크
    쿠크 개발자
    쿠크
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Kubernetes (2)
      • Programing (35)
        • JSP (3)
        • JAVA (22)
        • Spring (5)
        • HTML (5)
      • 이외 (12)
        • Git (2)
        • 임시 잡다함 (6)
        • IntelliJ (1)
        • 에러 모음 (2)
      • OS (2)
        • Linux (2)
      • DataBase (2)
        • Mysql (1)
      • 토이 프로젝트 (0)
        • 게시판 만들기 (0)
      • Spring (0)
      • 부동산 or 주식 (0)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

    • 깃 허브 주소
  • 공지사항

  • 태그

    HTML
    error
    spring-framwork
    spring
    상속
    MVC
    spring-framework
    kubernetes
    Database
    MySQL
    jsp
    java
    클래스
    에러 발생
    Linux
    HTTP란
    에러원인
    스프링 특징
    ubuntu
    IntelliJ
  • hELLO· Designed By정상우.v4.10.3
쿠크
제어문 - 반복문 LOOP
상단으로

티스토리툴바