for 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

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++;

        }

    }

}

무한 반복

형식

// 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);
    }

}

야구게임

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+"번 빙고!!");


    }

}