if문과 switch문에 대한 강의였는데 if문은 강의내용만큼은 알고 있어서 정리하지 않고 swtich에서
기억했으면 하는 부분만 정리를 했다.
1. swtich문
1) switch문 괄호 안에는 정수, 문자, 문자열만 기입 가능하다.
2. switch문 예
//1~12월까지 입력받아 해당하는 달의 마지막 날짜를 출력하세요
Scanner sc = new Scanner(System.in);
System.out.print("1~12월 까지중 하나를 입력하세요 : ");
int month = sc.nextInt();
switch(month) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
System.out.println("입력하신 월은 31일 까지입니다.");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("입력하신 월은 31일 까지입니다.");
break;
case 2:
System.out.println("입력하신 월은 28일 혹은 28일까지입니다.");
break;
default:
System.out.println("반드시 1~12월 중 하나를 입력해야 합니다");
break;
//return;
}
1) 같은 출력문 나오는 달끼리 묶음
- 1,3,5,7,8,10,12
- 4,6,9,11
- 2
2) switch는 break없으면 멈추지 않고 계속 밑으로 가는 것 이용
3. break, return의 차이
* break
가까이 있는 Loop를 종료시킨다.
case문 내에서 break를 만나면 case문을 빠져나오게 된다.
하지만 만약 case문 내에 break가 없다면 if문과는 달리 아래에 break를 만날 때까지 case조건들을 모두 실행하게 된다.
아래 예시에서 [ op = + ]인 경우를 생각해보면
case '+' 도 실행하고
case '-' 도 실행하고
case '*' 도 실행한 후에 break;를 만나 case문이 종료된다.
switch(op) {
case '+' :
result = num1 + num2;
case '-' :
result = num1 - num2;
case '*' :
result = num1 - num2;
break;
case '/' :
if( num2 != 0) {
result = num1 / num2;
}else {
System.out.println("0으로 나눌 수 없습니다.");
}
default:
System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
return; //메소드 종료시켜서 아래부분 실행하지 않음
}
* return
: 메소드를 종료시킨다.
즉 아래 예시에서 case내 조건을 하나도 만족시키지 못해 default를 실행하게 되면 method2( )를 종료시키므로,
default 아래에 있는 System.out.println("수행 결과 : " + num1 + " " + ~~) 은 실행하지 않는다.
package practice.conditional;
import java.util.Scanner;
public class ConditionalPractice {
public void method2() {
//문제 2 두 정수와 연산자 입력받아 연산 결과 출력
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 정수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두 번째 정수 입력 : ");
int num2 = sc.nextInt();
System.out.print("연산 기호 입력 : ");
char op = sc.next().charAt(0);
int result = 0;
switch(op) {
case '+' :
result = num1 + num2;
break;
case '-' :
result = num1 - num2;
break;
case '*' :
result = num1 * num2;
break;
case '/' :
if( num2 != 0) {
result = num1 / num2;
}else {
System.out.println("0으로 나눌 수 없습니다.");
}break;
case '%' :
result = num1 % num2;
break;
default:
System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
return; //메소드 종료시켜서 아래부분 실행하지 않음
}
System.out.println("수행 결과 : " + num1 + " " + op + " " + num2+ " = " + result);
sc.close();
}
}
'Java > 정리' 카테고리의 다른 글
[Java] 메모리구조 & 참조변수 (0) | 2021.05.03 |
---|---|
9회차_반복문(do ~ while문) (0) | 2021.04.19 |
[Java] 연산자 (0) | 2021.04.12 |
3회차_상수 & 데이터 오버플로우 & 형변환 (0) | 2021.04.10 |
2회차_출력메소드(printf) (0) | 2021.04.10 |