반응형
개쪼렙 개바린이예여 개바린..✨

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇

 

 

 

 

오늘은 기나긴 추석 연휴를 끝내고 학원에 출근 !

이번주 토요일은 정보처리기사 실기 시험인지라 추가 공부는 못하고

토요일 시험 볼 때까지는 하루 수업만 정리하려고 합니다 (이해해 주세요)

 

 

Today 

continue
: 더 이상 코드를 실행하지 않고 반복을 계속하여라 , 증감식은 동작함

break 
: 현재의 반복문을 종료하시오
**반복문에서 사용가능하다**

반복문 실수의 중요성
- 모르는 건 수정할 수 있으나 실수하는 건 수정하기 어렵다. 신중에 신중을 하자
- 본인의 방법으로 하지 말고 선생님이 알려준 방법대로 해야 한다

 

반복문 해석
한 줄 한줄 따로따로 해석하고 나중에 합쳐서 본다
이론을 기반으로 생각해야 한다
반복문은 배열을 접근할 목적으로 쓴다고 보면 되고 i의 값은 인덱스번호는 아니다. 각자 다르게 생각해야 한다. 

 

 

 

 

예제

 

 

 

 

 

 

연습 문제 1

continue나 break를 1개 이상 사용하기

1부터 100까지 숫자 중 짝수의 합만 구해라

public static void main(String[] args) {  
  
    int sum = 0;  
    for (int i = 1; i <= 100 ; i++) {  
        if ( i % 2 == 0){  
            sum+=i;  
            continue;  
        }  
    }  
    System.out.println(sum);  
}

 

 

 

연습 문제 2

범인 찾기
배열의 값을 0번 인덱스부터 합한다
합을 110을 넘어가게 하는 숫자(값)가 범인
int [] a = { 35,45,37,29,38,4 };

public static void main(String[] args) {  
    // 범인찾기  
    // 배열의 값을 0번 인덱스 부터 합한다.  
    // 합을 110 넘어가게 하는 숫자(값)이 범인이다  
  
    int[] a = { 35, 45, 37, 29, 38, 4};  
    int sum = 0;  
  
    for (int i = 0; i < a.length; i++) {  
        if (sum >= 110 ){  
            System.out.println(i + "번째 인덱스가 범인이다");  
            System.out.println("범인의 숫자 : " + a[i]);  
            break;  
        }  
        sum+=a[i];  
    }  
  
    System.out.println("합계 : " + sum);  
}

 

 

 

 

 

 

연습 문제 3

String k = "37423210234";
String kk = "";
kk변수는 k문자열을 다음 규칙에 의해 만드는 문자열
앞자리부터 한 자리씩 가져온다
문자가 4 이면 제거하고
문자가 0 이면 종료한다

 

public static void main(String[] args) {  
    String k = "37423210234";  
    String kk = "";  
    char[] tmp = k.toCharArray();  
  
    for (int i = 0; i < tmp.length; i++) {  
        char kTmp = tmp[i];  
        if(kTmp == '0' ){  
            break;  
        } else if (kTmp == '4' ){  
            continue;  
        }  
        kk = kk+kTmp;  
    }  
    System.out.println(kk);  
}

 

 

 

 

 

 

과제 1

1부터 100까지 숫자 중 홀수를 모두 출력하되 
3의 배수는 출력하지 마시오. 
(continue, break 1개 이상 사용하기)

public static void main(String[] args) {  
    for (int i = 1; i <= 100; i++) {  
        if (i % 3 == 0){  
            System.out.print(i + " ");  
        } if ( i % 3 != 0 ){  
            continue;  
        }  
    }  
}

 

 

 

 

 

과제 2

숫자 10개를 저장할 수 있는 배열을 만들고
0부터 99 숫자 중 랜덤으로 10개를 뽑습니다
이중 짝수만 저장하고 홀수는 무시합니다.(다시 뽑지 않습니다.)
0번째 번호 98   0번 인덱스에 저장
1번째 번호 97   무시  1번 인덱스는 선언 시 초기값
2번째 번호 88   2번  인덱스에 저장

public static void main(String[] args) {  
    int[] arrInt = new int[10];  
    Random r = new Random();  
  
    for (int i = 0; i < arrInt.length; i++) {  
        int tmp = r.nextInt(99);  
        if (tmp % 2 == 0){  
            arrInt[i] = tmp;  
        }  
    }  
  
    for (int i = 0; i < arrInt.length; i++) {  
        System.out.print(arrInt[i] + " / ");  
    }  
}

 

 

 

 

 

과제 3

게임을 만들어 보자
int [] road = {0,1,0,0,0,1,0,0,2,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,1,7,0,0,3,0,0,7,0,0,8,0,0,1,3,0,0,1,0};
int me=-1;

//주사위 게임 만들기
// if 
// for continue, break
// 한 사람이 게임을 하며 끝까지 통과한 거리를 계산한다. 배열의 한 칸이 거리이며 +1이다.
// 주사위가 아닌 다른 미션에 의해 도착점이 변경되면 도착점에 미션번호의 영향을 받지 않는다.
// 엔터를 치면 게임자는 주사위를 던진다.

sysout("[엔터키] 주사위를 던지세요");
in.nextLine();  // 엔터키를 치면 자동으로 다음 코드로 넘어간다. (Scanner in = new Scanner(System.in);
sysout("위 코드에서는 엔터키가 입력되어 이 코드가 실행됨");

1. 시작점은 배열인덱스 0이며, 끝은 배열의 마지막 인덱스이다.
2. 주사위를 던진다. 주사위는 1-6까지 이다. 주사위만큼 거리를 걸어간다.
3. 도착한 곳 배열의 값이 1일 경우는 뒤로 한 칸을 간다.
4. 도착한 곳 배열의 값이 2일 경우는 앞으로 한 칸을 간다. 
5. 도착한 곳 배열의 값이 7일 경우는 처음으로(me=-1) 돌아간다. 
6. 배열의 끝까지 완주하면 그동안 지나온 거리의 합을 출력한다. 

 

 

 

public static void main(String[] args) {  
    Scanner in = new Scanner(System.in);  
    Random r = new Random();  
    int[] road = {0, 1, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 7, 0, 0, 3, 0, 0, 7, 0, 0, 8, 0, 0, 1, 3, 0, 0, 1, 0};  
    int me = -1; // 초기값으로 돌아감  
    int randomInt = 0; // 랜덤 주사위 숫자 저장 변수  
    int tot = 0;  // 주사위 숫자의 총 합산 = 총 이동거리 변수  
  
    for (int i = 0; i < 44; i++) {  
        System.out.println("현재 인덱스 [" + i + "] 주사위를 던지세요 : 엔터키 입력");  
        in.nextLine();  
        randomInt = r.nextInt(6) + 1; // 랜덤 수 입력  
        System.out.println("주사위 숫자 : " + randomInt); // 현재 주사위 수 출력  
        tot+=randomInt; // 거리에 주사위값 누적  
        i+=randomInt-1; // 인덱스 이동 , 주사위 갯수에 -1을 하여 이동한다  
        if (i >= road.length) {  // i의 숫자가 44 이상일 경우(road 길이값)  
            System.out.println("------------도착 완료---------------");  
            System.out.println("총 거리는 : " + tot + "입니다");  
            break;  
        }  
        if (road[i] == 1) {  // i의 값이 1일 경우  
            System.out.println("현재 인덱스 번호 : " + i + "\n현재 인덱스 번호 값 : " + road[i]);  
            System.out.println("1칸 뒤로");  
            i--;  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
        } else if (road[i] == 2) {  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
            i++;  
            System.out.println("1칸 앞으로 | " + "현재 인덱스 번호 : " + i );  
  
        } else if (road[i] == 7) {  
            System.out.println("현재 인덱스 번호 : " + i + "\n현재 인덱스 번호 값 : " + road[i]);  
            i = me;  
            System.out.println(" 처음으로 돌아가기 ");  
        } else {  
            System.out.println("현재 인덱스 번호 : " + i);  
            System.out.println("해당 인덱스 번호 값 : " + road[i]);  
        }  
        System.out.println("----------------------------------------------");  
    }  
}

 

 

 

 

 

과제 4

이전 문제 업그레이드

도착한 곳 배열의 값이 3일 경우 
컴퓨터랑 가위바위보를 해서 이기면 앞으로 한 칸. 지면 뒤로 한 칸, 비기면 제자리에 있는다.

도착한 곳 배열의 값이 4일 경우
랜덤 한 숫자를 뽑아서 짝수면 앞으로 3칸, 홀수이면 뒤로 2칸을 간다. 

도착한 곳 배열의 값이 8일 경우 
업다운게임(3번 기회)을 해서 이기면 앞으로 5칸, 지면 뒤로 3칸을 간다.

 

public static void main(String[] args) {  
    Scanner in = new Scanner(System.in);  
    Random r = new Random();  
    int[] road = {0, 1, 0, 0, 0, 1, 8, 8, 2, 8, 4, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 1, 7, 8, 0, 3, 0, 0, 7, 0, 0, 8, 0, 0, 1, 3, 0, 0, 1, 0};  
    int me = -1; // 초기값으로 돌아감  
    int randomInt = 0; // 랜덤 주사위 숫자 저장 변수  
    int tot = 0;  // 주사위 숫자의 총 합산 = 총 이동거리 변수  
  
  
    for (int i = 0; i < road.length; i++) {  
        System.out.println("현재 인덱스 [" + i + "] 주사위를 던지세요 : 엔터키 입력");  
        randomInt = r.nextInt(6) + 1; // 랜덤 수 입력  
        in.nextLine();  
        System.out.println("주사위 숫자 : " + randomInt); // 현재 주사위 수 출력  
        tot += randomInt; // 거리에 주사위값 누적  
        i += randomInt - 1; // 인덱스 이동 , 주사위 갯수에 -1을 하여 이동한다  
  
        // i의 숫자가 44 이상일 경우(road 길이값) 출력후 게임 종료  
        if (i >= road.length - 1) {  
            System.out.println("------------도착 완료---------------");  
            System.out.println("현재 i의 숫자 : " + i);  
            System.out.println("총 거리는 : " + tot + "입니다");  
            break;  
        }  
  
        // 인덱스[i]값이 1일 경우  
        if (road[i] == 1) {  
            System.out.println("현재 인덱스 번호 : " + i + "\n현재 인덱스 번호 값 : " + road[i]);  
            System.out.println("1칸 뒤로");  
            i--;  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
        }  
  
        // 인덱스[i]값이 2일 경우  
        else if (road[i] == 2) {  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
            i++;  
            System.out.println("1칸 앞으로 | " + "현재 인덱스 번호 : " + i);  
        }  
  
  
        // 인덱스[i]값이 3일 경우  
        else if (road[i] == 3) {  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
            System.out.println("    [ 가위 바위 보 ]\n 이기면 1칸 앞으로 , 지면 1칸 뒤로, 비기면 제자리");  
            int rpsPc = r.nextInt(2); // 가위바위보 pc 랜점정의 0 주먹 1 가위 2 보  
            int userRps = 0;  
            int[][] rpsRoll = {{0, -1, 1}, {1, 0, -1}, {-1, 1, 0}};  
            for (int j = 0; j < 1; j++) {  
                System.out.println("0 : 주먹\n1 : 가위\n2 : 보\n0~2까지 숫자를 입력해주세요");  
                userRps = in.nextInt();  
                if (userRps < 0 || userRps > 2) {  
                    System.out.println("다시 입력 해 주세요");  
                    j--;  
                } else {  
                    continue;  
                }  
            }  
            System.out.println("PC : " + rpsPc + " | User : " + userRps);  
            int result = rpsRoll[rpsPc][userRps];  
            System.out.println("결과는 : [" + result + "] 입니다");  
            i = i + result;  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
            in.nextLine();  
        }  
  
  
        // 인덱스[i]값이 4일 경우  
        else if (road[i] == 4) {  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
            System.out.println("----------------------------------------------");  
            System.out.println("랜덤수를 추첨합니다 , 짝수이면 앞으로 3칸 , 홀수이면 뒤로 3칸");  
            int tmp = r.nextInt();  
            System.out.println("뽑힌 수는 [" + tmp + "]입니다");  
            if (tmp % 2 == 0){  
                System.out.println("짝수입니다 + 3 이동합니다");  
                i+=3;  
                System.out.println("3칸 앞으로 >> " + "현재 인덱스 번호 : " + i);  
            } else {  
                System.out.println("홀수 입니다 - 3 이동합니다");  
                i -= 3;  
                System.out.println("3칸 뒤로 >> " + "현재 인덱스 번호 : " + i);  
            }  
            in.nextLine();  
        }  
  
  
        // 인덱스[i]값이 7일 경우  
        else if (road[i] == 7) {  
            System.out.println("현재 인덱스 번호 : " + i + "\n현재 인덱스 번호 값 : " + road[i]);  
            i = me;  
            System.out.println(" 처음으로 돌아가기 ");  
        }  
  
  
        // 인덱스[i]값이 8일 경우  
        else if (road[i] == 8) {  
            System.out.println("현재 인덱스 번호 : " + i + "현재 인덱스 번호 값 : " + road[i]);  
            System.out.println("----------------------------------------------");  
            System.out.println("    [ 업&다운 게임(0~10) ] \n3번의 기회가 주어집니다\n이기면 + 5 , 지면 - 3 입니다 ");  
            int rpsPc = r.nextInt(10); // 업다운 게임 pc 입력 값  
            for (int j = 0; j < 3; j++) {  
                System.out.print("숫자를 입력해 주세요 : ");  
                int userRps = in.nextInt();  
  
                if (rpsPc > userRps){  
                    System.out.println("업");  
                } else if ( rpsPc < userRps ) {  
                    System.out.println("다운");  
                } else {  
                    System.out.println("PC의 값은 : " + rpsPc + "입니다");  
                    System.out.println("이겼습니다 , 앞으로 5칸 이동합니다");  
                    i+=5;  
                    System.out.println("현재 인덱스 번호 : " + i + "\n현재 인덱스 번호 값 : " + road[i]);  
                    break;  
                }  
                if (j == 2 && rpsPc != userRps ){  
                    System.out.println("PC의 값은 : " + rpsPc + "입니다");  
                    System.out.println("졌습니다. 뒤로 3칸 이동합니다");  
                    i-=3;  
                    System.out.println("현재 인덱스 번호 : " + i + "\n현재 인덱스 번호 값 : " + road[i]);  
                }  
            }  
            in.nextLine();  
        }  
        else {  
            System.out.println("현재 인덱스 번호 : " + i);  
            System.out.println("해당 인덱스 번호 값 : " + road[i]);  
        }  
        System.out.println("----------------------------------------------");  
    }  
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
유리쯔의일상