분기문
break 문
안쪽 반복문 종료
while () {
while() {
break;
}
}
레이블이 표시된 반복문 종료
out : while () {
while () {
break out;
}
}
예제 3-9
package sec06;
import java.util.Scanner;
public class Practice3_9 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x, sum;
while (true) {
System.out.print("양의 정수를 입력하세요 : ");
x = in.nextInt();
if (x == 999)
break;
sum = 0;
for (int i = 1; i <= x; i++)
sum += i;
System.out.printf("1부터 %d까지 합은 %d입니다. \n", x, sum);
}
System.out.println("프로그램을 종료합니다!");
}
}
continue 문
반복문에만 사용되며, 현재 반복은 건너뛰고, 나머지 반복만 계속 실행함
Switch 문 ( 기존 Switch 문)
여러 경로 중 하나를 선택할 때 사용
switch(변수) {
case 상수1 : 0개 이상의 실행문 // case 레이블
...
...
default : 0개 이상의 실행문 // 선택사항임 아무것도 아니면 얘가 쓰임
}
예제
public static void main(String[] args) {
int number = 2;
switch (number) {
case 3:
System.out.print("*");
case 2:
System.out.print("*");
case 1:
System.out.print("*");
}
}
실행결과
: case2 부터 끝까지 간다
**
이건 우리가 원하는 결과가 아니야
public static void main(String[] args) {
int number = 2;
switch (number) {
case 3:
System.out.print("*");
break;
case 2:
System.out.print("*");
break;
case 1:
System.out.print("*");
break;
}
}
break를 쓸 경우
case2의 실행문이 끝나면 switch가 끝남
개선된 Switch 문
필요성 : 기존 Switch문은 깔끔하지도 않고, 가독성도 떨어지고, break문의 누락으로 인한 오류가능성이 크다.
자바14부터 다음과 같은 변화 도입
화살표 case레이블
Switch 연산식
다중 case 레이블
Yield 예약어
static void whoIsIt(String bio) {
String kind = switch (bio) {
case "호랑이", "사자" -> kind = "포유류";
case "독수리", "참새" -> kind = "조류";
case "고등어", "연어" -> kind = "어류";
default -> {
System.out.print("어이쿠! ");
yield "...";
}
};
System.out.printf("%s는 %s이다. \n", bio, kind);
}
Switch 연산식의 주의사항
가능한 모든 값에 대하여 일치하는 case 레이블이 없으면 오류가 발생
case 1 -> "1개";
case 2 -> "2개";
default -> "많이";
이렇게 default를 설정해줘야 오류가 안남
스위치문 예시
package sec06;
import java.util.Scanner;
public class Practice03_10 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("등수 입력 : ");
int x = in.nextInt();
switch (x) {
case 1 -> System.out.println("아주 잘했습니다");
case 2, 3 -> System.out.println("잘했습니다");
case 4, 5, 6 -> System.out.println("보통입니다");
default -> System.out.println("노력해야겠습니다.");
}
}
}
case 는 comma 로 구분함
나눈 애를 인자로 받을 수도 있음.
package sec06;
import java.util.Scanner;
public class Practice03_11 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x;
char kind;
while (true) {
System.out.print("성적을 입력하세요 : ");
x = in.nextInt();
if (x < 0)
break;
kind = switch (x / 10) {
case 10, 9 -> 'A';
case 8, 7 -> 'B';
case 6, 5 -> 'C';
case 4 -> 'D';
default -> 'F';
};
System.out.printf("당신의 성적 등급은 %s입니다.\n", kind);
}
System.out.println("프로그램을 종료합니다.");
}
}
'TIL > [객체지향 프로그래밍] TIL' 카테고리의 다른 글
TIL (22.04.06) (0) | 2022.04.06 |
---|---|
TIL (22.04.01) (0) | 2022.04.01 |
TIL (22.03.18) (0) | 2022.03.18 |
TIL (22.03.16) (0) | 2022.03.16 |
TIL 1 (22.03.11) (0) | 2022.03.11 |