👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
오늘은 기나긴 추석 연휴를 끝내고 학원에 출근 !
이번주 토요일은 정보처리기사 실기 시험인지라 추가 공부는 못하고
토요일 시험 볼 때까지는 하루 수업만 정리하려고 합니다 (이해해 주세요)
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("----------------------------------------------");
}
}
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/10/06🌱 지금까지 배운 자바테스트 (1) | 2023.10.10 |
---|---|
2023/10/05🐰 중첩FOR문 (0) | 2023.10.10 |
2023/09/27🌱 배열과 단일for문을 사용한 문제풀이 (0) | 2023.09.29 |
2023/09/26🤔 반복문과 배열 문제 풀기 (0) | 2023.09.29 |
2023/09/25🌙 배열 및 for문 활용 (0) | 2023.09.26 |