Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 2024 정보처리기사 시나공 필기
- 스프링 db2 - 데이터 접근 기술
- 게시글 목록 api
- @Aspect
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch4
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch14
- 스프링 입문(무료)
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch11
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch6
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch2
- 타임리프 - 기본기능
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch12
- 스프링 고급 - 스프링 aop
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 로그인 처리
- jpa 활용2 - api 개발 고급
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch13
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch4 - 20 ~ 24 [break문, continue문, 이름붙은 반복문] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch4 - 20 ~ 24 [break문, continue문, 이름붙은 반복문]
소소한나구리 2023. 11. 8. 12:011) break문
- switch문을 벗어날 때 사용
- 자신이 포함된 하나의 반복문을 벗어날 때 사용
(1) 예제
- 무한반복문으로 i의 값을 증가시켜 sum에 계속 덧셈 연산을 수행
- if문으로 sum이 100을 넘어가면 break문을 동작하게 하여 무한 반복문을 종료
- 동일한 로직을 일반 while문, for문 for문의 무한 반복문으로도 구성
public class ex4_16 {
public static void main(String[] args) {
int sum = 0, i = 0;
//while 무한반복문: true 생략불가
while(true) { // 무한반복문 for(;true;) {} (for문은 true생략 가능)
if(sum > 100)
break; // 자신이 속한 반복문을 아웃
++i;
sum += i;
}
// 일반 while문으로 변경
while(sum < 100) {
++i;
sum += i;
}
// for문으로 변경
for(; sum < 100; sum += i) {
++i;
}
// for문의 무한반복문으로 변경
for( ; ; ) { // for문 true생략 가능
if(sum > 100)
break; // 자신이 속한 반복문을 아웃
++i;
sum += i;
}
System.out.println("i=" +i);
System.out.println("sum=" +sum);
}
}
i=14
sum=105
2) countinue문
- 자신이 포함된 반복문의 끝으로 이동 -> 다음 반복으로 넘어감
- 전체 반복 중에서 특정 조건의 반복을 건너 뛸 때 유용
(1) 예제
- i의 값을 10까지 1씩 증가하지만 if문의 조건에 i의 값이 3의 배수가 되면 continue문이 수행되어 println()코드를 수행하지 않고 다음 반복으로 넘어감
- 결과적으로 3의 배수만 제외하고 나머지 i값이 출력됨
public class ex4_17_continue {
// i를 3으로 나누었을 때의 나머지가 0인 경우 출력을 건너뛰는 코드 (3의 배수를 출력 제외)
public static void main(String[] args) {
for(int i = 0; i <= 10; i++) {
if (i%3 == 0)
continue;
System.out.println(i);
}
}
}
1
2
4
5
7
8
10
(2) break문과 continue문 활용
- 챗봇 만들기
- 무한 반복문 내부의 if문에 입력값이 0이 되면 break문이 동작하도록하여 프로그램을 종료하도록 설계
- else if문에는 1,2,3 의 숫자가 아닌 다른 숫자가 들어오게 되면 continue문을 수행하여 종료하지는 않지만 다음 반복을 실행하여 다시 메뉴를 보여주도록 설계
import java.util.*;
public class ex4_18_continue {
public static void main(String[] args) {
int menu = 0, num = 0;
Scanner scanner = new Scanner(System.in);
while(true) { // 무한반복문
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.print("원하는 메뉴(1~3)를 선택하세요,(종료:0)>");
String tmp = scanner.nextLine();
menu = Integer.parseInt(tmp);
if(menu==0) {
System.out.println("프로그램을 종료합니다.");
break; // 0을 입력하면 반복문을 break
} else if (!(1 <= menu && menu <= 3)) {
System.out.println("메뉴를 잘못 선택하셨습니다. (종료:0)");
continue; // 1~3번을 아닌 것을 입력하면 다시 반복문을 실행
}
System.out.println("선택하신 메뉴는 "+menu+"번입니다.");
}
}
}
0 입력 시 프로그램 종료
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요,(종료:0)>0
프로그램을 종료합니다.
1~3이 아닌 다른 수를 입력 시 반복문 재실행
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요,(종료:0)>4
메뉴를 잘못 선택하셨습니다. (종료:0)
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요,(종료:0)>
1~3을 선택 시 무한반복
3) 이름붙은 반복문
- 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있음\
- 중첩반복문에 사용
- contunue에는 쓰는 경우가 거의 없고 break에 많이 사용
(1) 예제
- for문 앞에 Loop1 : 으로 이름을 생성할 수 있음
- break문에 반복문에 생성한 이름을 작성하여 특정 반복문을 종료시킬 수 있음
public class ex4_19_naming {
public static void main(String[] args) {
// TODO Auto-generated method stub
// for문에 Loop1이라는 이름 생성
Loop1 : for(int i = 2; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
if(j==5)
break Loop1; // 5가 되면 반복문을 완전히 빠져나감
// break; //i를 9번까지 계속 반복
System.out.println(i+"*"+j+"="+i*j);
} // i 반복문 끝
System.out.println();
} // Loop1 끝
}
}
break Loop1; 결과값
2*1=2
2*2=4
2*3=6
2*4=8
만일 break; 로만 한다면?
2부터 9단까지 1~4까지의 구구단이 출력됨
(2) 계산 추가
- 아까의 챗봇 프로그램에 중첩 무한반복문을 사용하여 계산 로직을 추가
- 가장 바깥에 있는 while 반복문에 이름을 붙혀서 내부의 반복문에서도 전체 반복문을 빠져나갈 수 있도록 설정 -> 챗봇 로직 설정의 종료 로직을 구성할때 유용할 듯
import java.util.*;
public class ex4_20_naming {
public static void main(String[] args) {
int menu = 0, num = 0;
Scanner scanner = new Scanner(System.in);
outer :
while(true) { // 무한반복문1
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.print("원하는 메뉴(1~3)를 선택하세요,(종료:0)>");
String tmp = scanner.nextLine();
menu = Integer.parseInt(tmp);
if(menu==0) {
break; // 0을 입력하면 반복문을 break
} else if (!(1 <= menu && menu <= 3)) {
System.out.println("메뉴를 잘못 선택하셨습니다. (종료:0)");
continue; // 1~3번을 아닌 것을 입력하면 다시 반복문을 실행
}
for(;;) { // 무한반복문2
System.out.print("계산할 값을 입력하세요.(계산 종료:0, 전체 종료:99)>");
tmp = scanner.nextLine();
num = Integer.parseInt(tmp);
if(num==0)
break; // 서브메뉴 아웃 -> 다시 while로
if(num==99) // 네이밍한 outer 반복문 아웃
break outer;
switch(menu) {
case 1:
System.out.println("result="+ num*num);
break;
case 2:
System.out.println("result="+ Math.sqrt(num));
break;
case 3:
System.out.println("result="+ Math.log(num));
break;
}
} // for의 끝
} //while의 끝
System.out.println("프로그램을 종료합니다.");
} // main의 끝
}
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch5 - 6 ~ 7 [배열의 출력] (0) | 2023.11.09 |
---|---|
자바의 정석 기초편 ch5 - 1 ~ 5 [배열, 배열의 인덱스,배열의길이,배열의초기화] (0) | 2023.11.08 |
자바의 정석 기초편 ch4 - 16 ~ 19 [while문, do-while문] (0) | 2023.11.07 |
자바의 정석 기초편 ch4 - 13 ~ 15 [for문, 중첩for문] (0) | 2023.11.07 |
자바의 정석 기초편 ch4 - 9 ~ 12[switch문, 임의의 정수 만들기] (1) | 2023.11.06 |