[JAVA] 06. continue + break
지난번에 반복문을 정리하면서
반복문의 흐름을 바꿀 때, 특히 무한루프에서
continue 와 break 을 활용한다고 했다.
이번에는 continue 와 break 을 활용을 자세히 보자.
# break
하나의 반복문을 탈출할 때 사용한다.
반복한다 특히 무 한 루 프 에서 many 활용
# continue
continue문은 반복문을 빠져나가지 않으면서 다음 반복으로 넘어가고 싶을 때 사용한다.
무슨말인지 감이 잘 안 올텐데
에제를 보며 언 주로 활용하는지 알아보자.
오늘 활용할 예제는 사용자가 주문을 그만하겠다는 보기를 고를때까지
메뉴판을 반복적으로 보여주는 무한 반복문이다
break와 continue을 활용하여 코드를 구성해보자.
먼저 continue를 활용함에 중심을 두고 코드를 짰다.
continue는 continue 이하의 문장을 수행하지 않고 가장 가까운 반복문의 시작으로 간다.
import java.util.Scanner;
public class Newstart {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("어서오세요");
int n, menu=0;
while(true) {
System.out.println("메뉴를 선택하세요 ");
System.out.println("1.돈까스\t2.파스타\t3.피자\t4.김치찌개\t5.주문 끝 ");
n = scan.nextInt();
if (n < 5) {
menu++;
continue;
}
else if (n == 5) {
System.out.println("주문이 완료되었습니다.\n");
}
else {
System.out.println("잘못된 주문입니다.\n");
}
System.out.println("지금까지 주문하신 메뉴의 개수는 " + menu);
}
}
}
위 코드를 보면 만약 1 2 3 4 의 메뉴를 골랐다면
고른 메뉴의 수를 증가하고 continue를 실행하여
while문의 시작으로 돌아가 지금까지 주문한 메뉴의 개수를 출력하지 않을 것이다.
실행해보자.
여기서 오류가 있다
무한 반복문을 빠져 나올 장치를 만들어 놓지 않은 것!
이때 쓰는 것이 break
그럼 이제 break을 써서 무한반복문을 원할 때 탈출할 수 있도록 해보자.
import java.util.Scanner;
public class Newstart {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("어서오세요");
int n, menu=0;
while(true) {
System.out.println("메뉴를 선택하세요 ");
System.out.println("1.돈까스\t2.파스타\t3.피자\t4.김치찌개\t5.주문 끝 ");
n = scan.nextInt();
if (n < 5) {
menu++;
continue;
}
else if (n == 5) {
System.out.println("주문이 완료되었습니다.\n");
break;
}
else {
System.out.println("잘못된 주문입니다.\n");
}
}
System.out.println("지금까지 주문하신 메뉴의 개수는 " + menu);
scan.close();
}
}
아까의 코드에서 보기 5를 골랐을 때 break를 실행하여
반복문을 탈출하도록 했다.
실행 ㄱㄱ
이제 원하는 예쁜 결과를 얻을 수 있다.
결과는 예쁜데 과정도 예쁠까?
사실 조건은 불필요하게 많으면 좋지 않다.
사실 continue를 안쓰면 쬐꼼 더 짧고 간결하게 짤 수 있다.
다음 코드를 보자.
import java.util.Scanner;
public class Newstart {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("어서오세요");
int n, menu=0;
while(true) {
System.out.println("메뉴를 선택하세요 ");
System.out.println("1.돈까스\t2.파스타\t3.피자\t4.김치찌개\t5.주문 끝 ");
n = scan.nextInt();
if (n == 5) {
System.out.println("주문이 완료되었습니다.\n");
break;
}
else if (n > 5) {
System.out.println("잘못된 주문입니다.\n");
}
menu++;
}
System.out.println("지금까지 주문하신 메뉴의 개수는 " + menu);
scan.close();
}
}
나는 continue는 거의 안쓰는 것 같다.
이걸 쓰면서 또 느낀 건데
무조건 짧고 간결해보이는데 좋은 코드라고 생각했는데
이게 옳은 생각이었을까?
그럼 continue는 왜 존재하겠어?
어떤 코드가 좋은 코드인지 뭔가 생각을 잘못하고 있었을지도 모른다는 생각이 든다.
왜 당연하게 생각하고 있었을까?
과제가 하나 더 늘었다
좋은 코드란?