728x90
1. break문
- 자신이 포함된 하나의 반복문을 벗어난다. 아래 처럼 사용 가능
- 중요한 점은 for 문은 무한 반복 할 때 사용되는 true 가 생략 가능하나, while 문은 true 가 생략 불가능하다.
static void breakk() {
int i=0, sum=0;
while(true) { // 여기서는 true 생략 불가
if(sum > 100)
break;
i++;
sum+=i;
} // end of while
System.out.println("i = " + i);
System.out.println("sum = " + sum);
}
static void forr() {
int i=0, sum=0;
for(;;) { // for 문은 true 생략 가능, 혹은 ;true; 사용
if(sum > 100)
break;
++i;
sum+=i;
} // end of for
System.out.println("i = " + i);
System.out.println("sum = " + sum);
}
2. continue 문
- 자신이 포함된 반복문의 끝으로 이동 즉 다음 반복으로 넘어감
- 전체 반복 중에서 특정 조건시 반복을 건너 뛸 때 유용
- 1~10 까지 자연수 중 3배의 배수는 생략하고 출력
static void contiunee() {
for(int i=1; i<=10; i++) {
if(i%3==0) // 3의 배수는 3으로 나눴을 때 나머지가 0 인 수
continue;// 쉽게 생각해서 아래의 continue 의 의미는 sysout 부분을 건너띈다는 의미
System.out.println(i);
}
}
결과 :
1
2
4
5
7
8
10
3. 이름붙은 반복문
- 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
- break; 를 앞에 반복문의 이름을 붙여서 특정한 반복문을 벗어날 수 있다.
static void super_break() {
int i=0, j=0;
ha : for(i=1; i<=9; i++){ // i를 1~9 까지 반복
ha2 : for(j=1; j<=9; j++) { // j 를 1~9 까지 반복
if(j==5) { // 단 j 가 5가되면 중단
break ;
}
System.out.println(j+"*"+i+ "=" + j*i); // j*i 출력
}
System.out.println();
}
}
############### 결과 #############
// 결과로 j 는 4까지만 반복, i 는 그대로 9 까지 반복
1*1=1
2*1=2
3*1=3
4*1=4
1*2=2
2*2=4
3*2=6
4*2=8
1*3=3
2*3=6
3*3=9
4*3=12
1*4=4
2*4=8
3*4=12
4*4=16
1*5=5
2*5=10
3*5=15
4*5=20
1*6=6
2*6=12
3*6=18
4*6=24
1*7=7
2*7=14
3*7=21
4*7=28
1*8=8
2*8=16
3*8=24
4*8=32
1*9=9
2*9=18
3*9=27
4*9=36
4. 반복문, 제어문 활용하기
- 제곱근 로그 구하는 계산기 만들기
- 첫번째 무한 반복문(Menu)으로 메뉴문을 만들어서 반복시켰다. 이때 99 를 입력받거나 1이상 3이하가 아닌 숫자를 입력받는 경우 다시 입력을 요청하며 반복문을 재 실행시킨다.
- 두번째 무한 반복문으로 계산식을 돌린다. 계산식은 switch문을 활용한다.
static void calculation() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 버퍼로 받을게요
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int menu = 0; // 메뉴 변수 초기화
int num = 0; // 계산 결과 변수 초기화
Menu : for(;;) { // 메뉴 반복문(무한 반복문)
System.out.println("1) square"); // 제곱근
System.out.println("2) square root"); // 루트
System.out.println("3) log"); // 로그
System.out.print("메뉴선택(99 전체 종료) : ");
menu = Integer.parseInt(br.readLine()); // 여기서 입력받는건 메뉴
if(menu==99) { // 99 를 입력받으면 전체 종료
System.out.println("#### 종료합니다 ####");
break; // 이때 break; 로 종료되는 반복문은 Menu
}else if(!(1<=menu && menu<=3)) {
System.out.println("\n #### 메뉴를 다시 입력해주세요 #### \n");
continue; // 1과 3사이의 숫자가 아니면 ! 메뉴 다시 입력받기
}
for(;;) { // 1이상 3이하의 숫자를 받으면 아래 반복문 실행
System.out.print("\n 숫자 입력(0 계산종료, 99 전체 종료) > ");
// 0을 입력받으면 해당 계산 메뉴 종료
num = Integer.parseInt(br.readLine()); // 여기서 입력받는건 숫자
if(num==0) { // 0일 때는 해당 계산 메뉴만 종료
bw.write("\n #### 계산 종료 #### \n");
bw.newLine();
bw.flush();
break;
}else if(num==99) { // 어디서든 99를 입력받으면 전체 메뉴 종료
bw.write("\n #### 전체 종료 #### \n");
bw.flush();
break Menu;
}
switch(menu) {
case 1: // 메뉴가 1 일 때
System.out.println("\n Square = " + num*num);
break;
case 2: // 메뉴가 2 일 때
System.out.printf("\n Square root = %.5f \n", Math.sqrt(num));
break;
case 3: // 메뉴가 3 일 때
System.out.printf("\n Log = %.5f \n", Math.log(num));
} // /스위치문 종료
} // 계산식 반복문 종료
} // 메뉴 반복문 종료
br.close();
bw.flush();
bw.close();
}
5. 지금까지 공부한 것들을 활용한 미니 게임 만들기
- 게임 개요
- 용사가 할 수 있는 행동은 구르기, 점프, 달리기로 총 3가지
- 용사가 얻을 수 있는 총 경험치는 20이며, 겸험치를 모두 얻으면 끝!
- 용사는 각 행동은 할 때마다 1~5 사이의 랜덤한 경험치를 얻음
- 행동이 끝난 후 행동으로 얻은 경험치와 누적 경험치를 모두 표시함
static void mini_game() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int exp = 0; // 경험치 변수 초기화
System.out.println("당신은 용사입니다");
System.out.println("경험치가 20이 되면 종료합니다 \n");
for(;;) { // 경험치가 다 차기 전까지는 무한 반복
if(exp>0) { // 겸험치가 1 이상일때만 총 누적 경험치를 표시함
System.out.println("### 현재까지 얻은 경험치 : "+exp+" ###"+"\n");
}
System.out.print("어떻게 움직일까요?(점프 1, 달리기 2, 구르기 3 : ");
String str = br.readLine();
int i = Integer.parseInt(str);
int ran_exp = (int)((Math.random()*5)+1); // 랜덤한 경험치를 얻도록 Math.random 활용
if(i==1) {
exp+=ran_exp; // 랜덤 경험치 누적
System.out.println("\n 용사가 점프합니다.");
System.out.println("+Exp = "+ran_exp);
}else if(i==2) {
exp+=ran_exp; // 랜덤 경험치 누적
System.out.println("\n 용사가 달려갑니다");
System.out.println("+Exp = "+ran_exp);
}else if(i==3) {
exp+=ran_exp; // 랜덤 경험치 누적
System.out.println("\n 용사가 굴러갑니다");
System.out.println("+Exp = "+ran_exp);
}
if(exp>20) { // 경험치가 20 초과 일때 종료
System.out.println("\n 경험치가 다 찼습니다 끝!");
System.out.println();
break;
}
else if(i!=1 && i!=2 && i!=3) { // 1~3 사이의 행동이 아닌 다른 번호를 선택한 경우 재입력 요청
System.out.println("잘못입력했습니다 다시 입력해주세요");
System.out.println();
}
}
br.close();
}
'Java - 기본기' 카테고리의 다른 글
10. 배열 다루기 활용편 (2) : 총합, 평균, 섞기, 로또 만들기 (0) | 2021.10.11 |
---|---|
9. 배열 다루기 기초편 (1) : 배열의 생성, 선언, 인덱스 (0) | 2021.10.08 |
7. 조건문과 반복문 기초&활용 (2) : for, while, do ~ while (0) | 2021.10.01 |
6. 조건문과 반복문 기초&활용 (1) (0) | 2021.09.27 |
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법 (2) | 2021.09.26 |
댓글